在Java中,可以使用ExecutorService
接口的shutdownNow()
方法來(lái)強(qiáng)制結(jié)束并拋出任務(wù)。這個(gè)方法會(huì)嘗試立即停止所有在執(zhí)行的任務(wù),并返回一個(gè)包含未執(zhí)行的任務(wù)的列表。
下面是一個(gè)簡(jiǎn)單的示例代碼,演示如何使用ExecutorService
和shutdownNow()
方法來(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ì)打印出提示信息。