java超時(shí)怎么強(qiáng)制結(jié)束拋出任務(wù)

小億
181
2024-03-01 11:42:17

在Java中,可以使用ExecutorService接口的shutdownNow()方法來(lái)強(qiáng)制結(jié)束并拋出任務(wù)。這個(gè)方法會(huì)嘗試立即停止所有在執(zhí)行的任務(wù),并返回一個(gè)包含未執(zhí)行的任務(wù)的列表。

下面是一個(gè)簡(jiǎn)單的示例代碼,演示如何使用ExecutorServiceshutdownNow()方法來(lái)強(qiáng)制結(jié)束并拋出任務(wù):

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();

        // 提交一個(gè)任務(wù)
        executor.submit(() -> {
            try {
                Thread.sleep(5000); // 模擬一個(gè)耗時(shí)任務(wù)
            } catch (InterruptedException e) {
                System.out.println("任務(wù)被中斷");
                return;
            }
            System.out.println("任務(wù)完成");
        });

        // 等待一段時(shí)間后強(qiáng)制結(jié)束任務(wù)
        try {
            List<Runnable> remainingTasks = executor.shutdownNow();
            if (!remainingTasks.isEmpty()) {
                System.out.println("強(qiáng)制結(jié)束任務(wù)");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

在這個(gè)示例中,我們首先創(chuàng)建一個(gè)ExecutorService并提交一個(gè)耗時(shí)5秒的任務(wù)。然后在等待一段時(shí)間后,調(diào)用shutdownNow()方法來(lái)強(qiáng)制結(jié)束任務(wù)。如果有未執(zhí)行的任務(wù),將會(huì)打印出提示信息。

0