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

溫馨提示×

如何利用JavaFutureTask實現任務調度

小樊
81
2024-11-19 13:42:46
欄目: 編程語言

JavaFutureTask 是一個實現了 RunnableFuture 接口的類,它允許你在一個單獨的線程中執行任務。要實現任務調度,你可以使用 ScheduledExecutorService。以下是一個簡單的示例,展示了如何使用 JavaFutureTaskScheduledExecutorService 實現任務調度:

  1. 首先,導入所需的類:
import java.util.concurrent.*;
  1. 創建一個實現 Runnable 接口的任務類:
class MyTask implements Runnable {
    private String taskName;

    public MyTask(String taskName) {
        this.taskName = taskName;
    }

    @Override
    public void run() {
        System.out.println("Executing task: " + taskName);
        try {
            // 模擬任務執行耗時
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("Task completed: " + taskName);
    }
}
  1. 創建一個方法來調度任務:
public static ScheduledFuture<?> scheduleTask(ScheduledExecutorService executor, MyTask task, long delay, TimeUnit unit) {
    // 使用 JavaFutureTask 包裝任務
    JavaFutureTask<Void> futureTask = new JavaFutureTask<>(task, null);

    // 調度任務
    return executor.schedule(futureTask, delay, unit);
}
  1. main 方法中創建一個 ScheduledExecutorService 實例,并調度任務:
public static void main(String[] args) {
    // 創建一個具有單個線程的 ScheduledExecutorService
    ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);

    // 創建任務實例
    MyTask task1 = new MyTask("Task 1");
    MyTask task2 = new MyTask("Task 2");

    // 調度任務,延遲 3 秒后執行,每隔 1 秒執行一次
    ScheduledFuture<?> future1 = scheduleTask(executor, task1, 3, TimeUnit.SECONDS);
    ScheduledFuture<?> future2 = scheduleTask(executor, task2, 0, TimeUnit.SECONDS);

    // 添加任務完成時的監聽器
    future1.addListener(() -> System.out.println("Task 1 completed."), executor);
    future2.addListener(() -> System.out.println("Task 2 completed."), executor);

    // 關閉 executor
    executor.shutdown();
}

在這個示例中,我們創建了一個名為 MyTask 的任務類,它實現了 Runnable 接口。然后,我們創建了一個名為 scheduleTask 的方法,該方法接受一個 ScheduledExecutorService 實例、一個任務實例、一個延遲以及一個時間單位作為參數。這個方法使用 JavaFutureTask 包裝任務,并使用 ScheduledExecutorServiceschedule 方法調度任務。

main 方法中,我們創建了一個 ScheduledExecutorService 實例,并調度了兩個任務。第一個任務延遲 3 秒后執行,第二個任務立即執行。我們還為每個任務添加了一個監聽器,當任務完成時,它將打印一條消息。最后,我們關閉了 executor

0
中阳县| 彝良县| 馆陶县| 绍兴县| 同心县| 宁晋县| 张家川| 尖扎县| 海原县| 大足县| 汤原县| 班玛县| 潜江市| 屯昌县| 五大连池市| 拉孜县| 新绛县| 定南县| 招远市| 新邵县| 安陆市| 焦作市| 诸城市| 庐江县| 东山县| 长兴县| 涞水县| 武清区| 奇台县| 黄梅县| 河北区| 勐海县| 海盐县| 沾益县| 江门市| 天峨县| 靖远县| 湘乡市| 永登县| 常山县| 罗山县|