溫馨提示×

如何監控JavaFutureTask的執行狀態

小樊
99
2024-11-19 13:47:45
欄目: 編程語言

要監控JavaFutureTask的執行狀態,您可以使用以下方法:

  1. 使用isDone()方法檢查任務是否完成。
  2. 使用isCancelled()方法檢查任務是否被取消。
  3. 使用getException()方法獲取任務執行過程中拋出的異常(如果任務未完成)。
  4. 使用get()方法獲取任務的結果。請注意,get()方法會阻塞,直到任務完成。

以下是一個簡單的示例:

import java.util.concurrent.*;

public class MonitorJavaFutureTask {
    public static void main(String[] args) {
        // 創建一個Callable任務
        Callable<String> task = () -> {
            Thread.sleep(3000); // 模擬耗時操作
            return "任務執行結果";
        };

        // 創建一個FutureTask實例
        FutureTask<String> futureTask = new FutureTask<>(task);

        // 將FutureTask提交給線程池執行
        ExecutorService executorService = Executors.newSingleThreadExecutor();
        executorService.submit(futureTask);

        try {
            // 檢查任務是否完成
            if (futureTask.isDone()) {
                System.out.println("任務已完成");

                // 獲取任務結果
                String result = futureTask.get();
                System.out.println("任務結果: " + result);
            } else {
                System.out.println("任務尚未完成");
            }

            // 檢查任務是否被取消
            if (futureTask.isCancelled()) {
                System.out.println("任務已取消");
            }

            // 獲取任務執行過程中拋出的異常(如果任務未完成)
            try {
                futureTask.get();
            } catch (ExecutionException e) {
                System.out.println("任務執行過程中拋出異常: " + e.getCause());
            }
        } catch (InterruptedException e) {
            System.out.println("主線程被中斷");
        } finally {
            // 關閉線程池
            executorService.shutdown();
        }
    }
}

在這個示例中,我們創建了一個Callable任務,然后將其封裝到FutureTask實例中。接著,我們將FutureTask提交給線程池執行。在主線程中,我們使用isDone()、isCancelled()getException()方法檢查任務的狀態。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女