中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

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
普洱| 尼勒克县| 饶阳县| 河东区| 阳西县| 彝良县| 石嘴山市| 左云县| 霍林郭勒市| 安康市| 兴海县| 布拖县| 垦利县| 成安县| 巴彦县| 西城区| 嘉义县| 南城县| 和龙市| 清水县| 正蓝旗| 扶沟县| 南川市| 嘉峪关市| 江阴市| 潢川县| 桓台县| 禹城市| 罗田县| 奉化市| 太原市| 阿瓦提县| 昌平区| 剑阁县| 上虞市| 衡水市| 南江县| 宣城市| 叶城县| 安溪县| 镇雄县|