Executors.newSingleThreadScheduledExecutor() 问题
ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor(); service.scheduleWithFixedDelay( new Runnable() { @Override public void run() { test1(); //这是可以的 } }, delayMinutes, minuteInterval, TimeUnit.MINUTES); service.scheduleWithFixedDelay( new Runnable() { @Override public void run() { test2(); //这是可以的 } }, delayMinutes, minuteInterval, TimeUnit.MINUTES); |
共用一个 newSingleThreadScheduledExecutor (这里不考虑 newScheduledThreadPool )
可以运行多个任务,但是
1: 这几个任务是串行的,假设test2里有一个thread.sleep(20000)就会一直等待完成,才开始下一个
2: 一个挂掉,其它都挂,所以一般都是在test1()里面, try catch到问题
3.参考游戏里 世界刷点
4.定时任务,重启服务器时,最好, 调用 shutdown ,确保停服会考虑正在运行的schedule, 不会导致数据丢失
梅花香自古寒来