我使用的是ScheduledExecutorService,在我調用它的shutdown方法後,我無法在其上安排Runnable。在shutdown()
之後調用scheduleAtFixedRate(runnable, INITIAL_DELAY, INTERVAL, TimeUnit.SECONDS)
將拋出java.util.concurrent.RejectedExecutionException。在ScheduledExecutorService上調用shutdown()
之後是否有另一種方法來運行新任務?ScheduledExecutorService啓動多次停止
11
A
回答
35
您可以重新使用調度程序,但不應該關閉它。而是取消調用scheduleAtFixedRate方法時可以獲得的正在運行的線程。例如:
//get reference to the future
Future<?> future = service.scheduleAtFixedRate(runnable, INITIAL_DELAY, INTERVAL, TimeUnit.SECONDS)
//cancel instead of shutdown
future.cancel(true);
//schedule again (reuse)
future = service.scheduleAtFixedRate(runnable, INITIAL_DELAY, INTERVAL, TimeUnit.SECONDS)
//shutdown when you don't need to reuse the service anymore
service.shutdown()
5
的shutdown()
的javadoc說:
Initiates an orderly shutdown in which previously submitted tasks are executed,
but no new tasks will be accepted.
所以,你不能叫shutdow()
,然後安排新的任務。
+0
有關如何在關機後重新安排新任務的建議? – walters 2010-11-18 09:33:50
+0
創建一個新的ScheduledExecutorService或不關閉現有的ScheduledExecutorService。你有沒有理由關閉它? – 2010-11-18 12:11:04
2
您不能讓執行程序在關閉它後接受新的任務。更相關的問題是爲什麼你需要首先關閉它?您創建的執行者應該在應用程序或子系統的整個生命週期中重新使用。
相關問題
- 1. 如何多次啓動和停止scheduledexecutorservice
- 2. ScheduledExecutorService每次啓動較晚
- 3. 如何停止ScheduledExecutorService?
- 4. 使用ScheduledExecutorService啓動和停止計時器
- 5. 如何停止ignore_user_abort一次啓動?
- 6. 如何停止一次intent.ACTION_CALL啓動?
- 7. TimerTask啓動停止只執行一次
- 8. socket.io啓動和停止立即再次
- 9. 停止從多次
- 10. 停止並啓動SignalR-Objc SRHubConnection多次使連接不穩定
- 11. 有沒有辦法多次啓動和停止SwingWorker ..?
- 12. IISExpress在VS 2015更新3中多次啓動/停止
- 13. SSRS啓動/停止
- 14. 啓動/停止JVM
- 15. 停止並從ScheduledExecutorService中刪除任務
- 16. Java-如何正確地停止ScheduledExecutorService
- 17. 當USB未連接時,ScheduledExecutorService停止
- 18. 多次觸發停止滾動功能?
- 19. Ti.Android.currentActivity.startActivity()停止啓動活動
- 20. 春季批次暫停/恢復與停止/重新啓動
- 21. 如何一次又一次啓動和停止後臺線程?
- 22. jQuery - 在啓動一次函數後停止一次
- 23. 第二次啓動時停止第一次倒計時
- 24. AngularJS - 使用requestAnimationFrame(啓動/停止/啓動)
- 25. 停止NSPopover多次打開
- 26. 停止多次觸發addClass
- 27. 停止多次點擊vue.js
- 28. UIActivityIndicatorView啓動和停止
- 29. C#啓動和停止Apache
- 30. spin.js啓動但不停止
這是預期的行爲。你能解釋一下你正在做什麼以及爲什麼你想在關閉後執行另一個可運行的程序? – Jeremy 2010-11-17 14:38:39