溫馨提示×

java settimeout 怎處理任務取消

小樊
107
2024-11-29 16:58:54
欄目: 編程語言

在Java中,setTimeout通常用于在指定的時間后執行一個任務。然而,Java沒有內置的setTimeout函數,但你可以使用ScheduledExecutorService來實現類似的功能。要取消一個正在執行的任務,你可以使用Future.cancel()方法。

以下是一個使用ScheduledExecutorServiceFuture.cancel()的示例:

import java.util.concurrent.*;

public class TimeoutExample {
    public static void main(String[] args) {
        // 創建一個單線程的計劃執行服務
        ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();

        // 提交一個任務并獲取一個Future對象
        Future<?> future = executor.submit(() -> {
            try {
                System.out.println("任務開始執行...");
                Thread.sleep(10000); // 模擬一個耗時任務
                System.out.println("任務執行完成...");
            } catch (InterruptedException e) {
                System.out.println("任務被中斷...");
            }
        });

        // 設置一個超時時間(單位:毫秒)
        long timeout = 5000;

        // 檢查任務是否在超時時間內完成
        if (future.isDone()) {
            System.out.println("任務在超時時間內完成...");
        } else {
            // 超時后取消任務
            boolean isCancelled = future.cancel(true);
            if (isCancelled) {
                System.out.println("任務已取消...");
            } else {
                System.out.println("任務無法取消...");
            }
        }

        // 關閉執行服務
        executor.shutdown();
    }
}

在這個示例中,我們創建了一個ScheduledExecutorService并提交了一個任務。然后,我們設置了一個超時時間,并在超時后嘗試取消任務。如果任務成功取消,我們將看到"任務已取消…"的輸出。

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