91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

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
南靖县| 四会市| 永修县| 虎林市| 兴国县| 虹口区| 冷水江市| 绥化市| 五河县| 木兰县| 达拉特旗| 潞西市| 光山县| 武义县| 类乌齐县| 宜丰县| 福州市| 出国| 广德县| 九龙坡区| 兴安县| 中宁县| 广元市| 朝阳县| 肥东县| 澄江县| 彩票| 花莲市| 金华市| 沈阳市| 柳林县| 麻阳| 加查县| 通山县| 龙井市| 修水县| 西吉县| 扎囊县| 明溪县| 民勤县| 南昌县|