在這種情況下,我們對能夠中斷超過預定義超時的任務的ExecutorService 實作感興趣。
其中一個實作是TimeoutThreadPoolExecutor,提供了為提交的任務指定超時時長的機制。
<br>import java.util.List;<br>導入 java.util.concurrent.*;<p>公共類別TimeoutreadThreadThoolExecutor ext {</p><pre class="brush:php;toolbar:false">private final long timeout; private final TimeUnit timeoutUnit; // ... (rest of the implementation)
}
要使用此執行器服務,只需建立一個實例,指定所需的timeout:
TimeoutThreadPoolExecutor executor = new TimeoutThreadPoolExecutor(..., timeout, TimeUnit.MILLISECONDS);
然後,照常將你的任務提交給執行者。超過指定超時的任務將會中斷。
或者,您可以使用 ScheduledExecutorService:
ScheduledExecutorService executor = Executors.newScheduledThreadPool(2); Future<?> handler = executor.submit(new Callable() { /* ... */ }); executor.schedule(() -> handler.cancel(true), 10000, TimeUnit.MILLISECONDS);
此策略確保任務在之後中斷10 秒。
以上是如何建立超時後中斷任務的ExecutorService?的詳細內容。更多資訊請關注PHP中文網其他相關文章!