Java タイムアウト時のタスク強制終了方法【実践解説】

Javaでは、ExecutorServiceインターフェースのshutdownNow()メソッドを使用して、タスクを強制的に終了して例外をスローすることができます。このメソッドは、すべての実行中のタスクを即座に停止し、実行されていないタスクのリストを返します。

以下是一个简单的示例代码,展示如何使用ExecutorService和shutdownNow()方法来强制结束并抛出任务:

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        ExecutorService executor = Executors.newSingleThreadExecutor();

        // 提交一个任务
        executor.submit(() -> {
            try {
                Thread.sleep(5000); // 模拟一个耗时任务
            } catch (InterruptedException e) {
                System.out.println("任务被中断");
                return;
            }
            System.out.println("任务完成");
        });

        // 等待一段时间后强制结束任务
        try {
            List<Runnable> remainingTasks = executor.shutdownNow();
            if (!remainingTasks.isEmpty()) {
                System.out.println("强制结束任务");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

この例では、まずExecutorServiceを作成し、5秒かかるタスクを提出します。その後、しばらく待ってから、shutdownNow()メソッドを呼び出してタスクを強制終了します。実行されていないタスクがある場合、メッセージが表示されます。

bannerAds