![](/img/trans.png)
[英]Scheduling an Applet start with ScheduledExecutorService
[英]ScheduledExecutorService call shutdown for infinite scheduling
我正在使用ScheduledExecutorService,該服務計划無限制地每分鍾運行
有人可以告訴我何時在ScheduledExecutorService上調用關機嗎
我已經研究了番石榴MoreExecutors。 這不起作用,因為我需要阻塞主線程以保持其他線程連續運行
用例
我的任務是不斷監視系統以檢查延遲/故障。
我需要定期運行此任務,並基於此任務配置Cloudwatch警報。 理想情況下,我希望任務即使在出現延遲尖峰時也能繼續執行,因為會觸發警報
因此,我正在使用ScheduledExecutorService定期安排任務。
我想知道在執行程序服務上調用shutdown()的理想位置
當前, Executors
的工廠方法返回ScheduledThreadPoolExecutor
1的實例。 默認情況下, ScheduledThreadPoolExecutor
在關閉后將不會繼續執行定期任務。 您可以通過setContinueExistingPeriodicTasksAfterShutdownPolicy
進行配置。
設置關於即使執行程序已
shutdown
也是否繼續執行現有定期任務的策略。 在這種情況下,執行將一直持續到shutdownNow
或已關閉的策略設置為false
為止。 默認情況下,此值為false
。
因為它是一個真正的實現細節是什么實現ScheduledExecutorService
工廠方法Executors
返回,它可能會更好打造ScheduledThreadPoolExecutor
直接。
ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(1);
executor.setContinueExistingPeriodicTasksAfterShutdownPolicy(true);
executor.scheduleAtFixedRate(() -> System.out.println("Hello, World!"), 0L, 1L, TimeUnit.SECONDS);
executor.shutdown();
注意,當前這ScheduledThreadPoolExecutor
配置為使用非守護程序線程。 即使調用了shutdown
,但如果不取消定期任務,它們也會使JVM保持活動狀態。 如果要使用守護程序線程,請使用自定義ThreadFactory
。
1. newSingleThreadScheduledExecutor
方法返回一個不可配置的包裝 ,該包裝將委托給ScheduledThreadPoolExecutor
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.