亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

JavaFutureTask如何取消任務

小樊
81
2024-11-19 13:33:44
欄目: 編程語言

在Java中,要取消一個FutureTask任務,你需要調用Future.cancel()方法。這個方法接受一個布爾參數mayInterruptIfRunning,用于指示是否允許中斷正在運行的任務。

以下是一個簡單的示例,展示了如何使用FutureTaskcancel()方法取消任務:

import java.util.concurrent.*;

public class Main {
    public static void main(String[] args) {
        // 創建一個Callable任務
        Callable<String> task = () -> {
            Thread.sleep(5000); // 模擬一個耗時任務
            return "Task completed";
        };

        // 將Callable任務包裝成FutureTask
        FutureTask<String> futureTask = new FutureTask<>(task);

        // 提交FutureTask到線程池
        ExecutorService executorService = Executors.newSingleThreadExecutor();
        executorService.submit(futureTask);

        try {
            // 等待一段時間后取消任務
            Thread.sleep(2000);
            boolean isCancelled = futureTask.cancel(true); // 設置mayInterruptIfRunning為true以允許中斷
            if (isCancelled) {
                System.out.println("Task cancelled.");
            } else {
                System.out.println("Task not cancelled.");
            }
        } catch (InterruptedException e) {
            System.out.println("Main thread interrupted.");
        } finally {
            // 關閉線程池
            executorService.shutdown();
        }
    }
}

在這個示例中,我們創建了一個Callable任務,然后將其包裝成FutureTask。接著,我們將FutureTask提交給一個線程池。在等待了2秒后,我們調用futureTask.cancel(true)來取消任務。如果任務被取消,isCancelled將為true,否則為false。最后,我們關閉線程池。

需要注意的是,如果任務已經開始執行(即running狀態),那么cancel()方法會嘗試中斷任務。如果任務已經完成、已經取消或者由于其他原因而無法中斷,那么cancel()方法將返回false

0
玉林市| 长岛县| 凤城市| 秦皇岛市| 昂仁县| 肇源县| 朔州市| 金坛市| 吴堡县| 宿州市| 安图县| 太白县| 西充县| 阜新| 青海省| 会同县| 扎赉特旗| 山阳县| 凤台县| 旺苍县| 陵川县| 旌德县| 青冈县| 庆元县| 治县。| 桂平市| 建阳市| 宁海县| 华安县| 额济纳旗| 乌鲁木齐县| 洪湖市| 响水县| 枣强县| 且末县| 彭州市| 杭锦旗| 庆阳市| 如皋市| 正安县| 饶阳县|