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