在 Java 並發程式設計中,中斷和取消都是用來停止任務的方法。中斷是立即停止執行緒運行,透過呼叫 Thread.interrupt() 實作;取消是協作過程,需要任務明確檢查取消狀態並做出回應,透過建立可取消任務實現。
#在並發程式設計中,有時需要在任務進行中中斷或取消它。 Java 提供了兩種方法來處理這些情況:中斷和取消。
中斷
中斷是讓執行緒停止執行目前任務的一種機制。這通常用於需要立即停止任務的情況,例如當使用者取消操作或遇到錯誤時。透過呼叫 Thread.interrupt()
方法可以中斷執行緒。
// 中断线程 Thread thread = new Thread(() -> { // 线程执行的任务 while (!Thread.currentThread().isInterrupted()) { // 运行任务 } }); thread.start(); // 在某些条件下中断线程 if (condition) { thread.interrupt(); }
被中斷的執行緒會拋出 InterruptedException
例外。執行緒可以捕獲此異常並做出相應的處理,例如停止任務或清理資源。
取消
取消是另一種讓執行緒停止執行目前任務的方法。與中斷不同的是,取消是一個協作過程,需要線程明確檢查其取消狀態並做出反應。透過建立實作 java.util.concurrent.Future
介面的可取消任務,可以實現取消。
// 创建可取消任务 ExecutorService executorService = Executors.newFixedThreadPool(1); Future<?> task = executorService.submit(() -> { // 线程执行的任务 while (!task.isCancelled()) { // 运行任务 } }); // 在某些条件下取消任务 if (condition) { task.cancel(true); }
當任務被取消時,Future.isCancelled()
方法將傳回 true
。執行緒可以定期檢查此狀態並根據需要停止任務。
以上是Java 並發程式設計如何處理中斷和取消?的詳細內容。更多資訊請關注PHP中文網其他相關文章!