Timer运行几个小时后挂掉,虽然我在里面捕捉了所有异常,仍然挂掉了。
查找资料,发现Timer确实有这样的不稳定性。
解决:
java.util.concurrent.ScheduledExecutorService globalTimer = java.util.concurrent.Executors.newSingleThreadScheduledExecutor();
改用这个替代Timer
SomeTask 继承 TimerTask
globalTimer.scheduleAtFixedRate(new SomeTask(), COMMON.CHECK_REDIS_IDLE, COMMON.CHECK_REDIS_IDLE, TimeUnit.MILLISECONDS);
查找资料,发现Timer确实有这样的不稳定性。
解决:
java.util.concurrent.ScheduledExecutorService globalTimer = java.util.concurrent.Executors.newSingleThreadScheduledExecutor();
改用这个替代Timer
SomeTask 继承 TimerTask
globalTimer.scheduleAtFixedRate(new SomeTask(), COMMON.CHECK_REDIS_IDLE, COMMON.CHECK_REDIS_IDLE, TimeUnit.MILLISECONDS);