溫馨提示×

java newfixedthreadpool怎樣關閉線程池

小樊
144
2024-11-26 15:03:23
欄目: 編程語言

要關閉Java中的FixedThreadPool,您需要調用shutdown()shutdownNow()方法。這兩個方法的主要區別在于它們處理正在執行任務的方式。

  1. shutdown(): 這個方法將啟動線程池的關閉過程。已經提交的任務將繼續執行,但不再接受新任務。這個方法不會立即關閉線程池,而是等待所有任務完成后才關閉。
ExecutorService executorService = Executors.newFixedThreadPool(5);
// 提交并執行任務...
executorService.shutdown(); // 關閉線程池
  1. shutdownNow(): 這個方法將嘗試立即停止所有正在執行的任務,并返回尚未開始執行的任務列表。這個方法無法保證能夠立即停止所有任務,因為它們可能在執行過程中不響應中斷。
ExecutorService executorService = Executors.newFixedThreadPool(5);
// 提交并執行任務...
List<Runnable> unfinishedTasks = executorService.shutdownNow(); // 立即關閉線程池,返回未完成任務列表

在關閉線程池后,您可以使用awaitTermination()方法等待所有任務完成。這個方法會阻塞當前線程,直到所有任務完成或超時(可選)。

executorService.shutdown();
try {
    if (!executorService.awaitTermination(60, TimeUnit.SECONDS)) {
        executorService.shutdownNow();
    }
} catch (InterruptedException e) {
    executorService.shutdownNow();
}

這樣,您就可以確保線程池被正確關閉,所有任務都已完成,或者被取消。

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