透過超時中斷 ExecutorService 中的任務
實作一個自訂 ExecutorService 來處理逾時後的任務中斷可能具有挑戰性。然而,Java 並發框架使用 ScheduledExecutorService 提供了一個方便的解決方案。
針對任務逾時的 ScheduledExecutorService
ScheduledExecutorService 允許安排任務在指定的延遲後或定期執行間隔。透過利用此功能,您可以建立自訂 ExecutorService 來監視提交的任務,並在超過預設逾時時中斷它們。
TimeoutThreadPoolExecutor 實作
建立此類任務的一種方法ExecutorService 是 TimeoutThreadPoolExecutor 類,它擴展了標準 ThreadPoolExecutor。它整合了 ScheduledExecutorService (timeoutExecutor) 和並發映射 (runningTasks) 來追蹤正在運行的任務並安排其中斷。
TimeoutThreadPoolExecutor 的功能
用法
到使用此自訂 ExecutorService,使用所需參數實例化 TimeoutThreadPoolExecutor 並開始提交任務。如果任務尚未完成,將在指定的逾時後中斷。
使用 Schedule 的替代方法
中斷 ExecutorService 中長時間運行的任務的另一種方法是使用ScheduledExecutorService提供的調度方法。您可以提交兩個任務:一個執行實際任務,另一個在指定逾時後取消任務。
程式碼範例
ScheduledExecutorService executor = Executors.newScheduledThreadPool(2); Future handler = executor.submit(new Callable(){ ... }); executor.schedule(new Runnable(){ public void run(){ handler.cancel(); } }, 10000, TimeUnit.MILLISECONDS);
此方法可讓您執行一個任務,逾時時間為 10 秒,逾時後該任務將被取消並中斷。
以上是如何在Java ExecutorService中實現定時任務中斷?的詳細內容。更多資訊請關注PHP中文網其他相關文章!