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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM