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, 不会导致数据丢失

相关