【Java 多線程併發】4 種線程池

Java 裏面線程池的頂級接口是 Executor,但是嚴格意義上講 Executor 並不是一個線程池,而只是一個執行線程工具。

真正的線程池接口是 ExecutorService。

1.newCachedThreadPool

創建一個可根據需要創建新線程的線程池,但是在以前構造的線程可用時將重用它們。

對於執行很多短期異步任務的程序而言,這些線程池通常可提高程序性能。

調用 execute 將重用以前構造的線程(如果線程可用)。如果現有線程沒有可用的,則創建一個新線程並添加到池中。終止並從緩存中移除那些已有 60 秒未被使用的線程。

因此,長時間保持空閒的線程池不會使用任何資源。

2.newFixedThreadPool

創建一個可重用固定線程數的線程池,以共享的無界隊列方式來運行這些線程。

話外音:什麼是無界隊列?

有界隊列:就是有固定大小的隊列。比如設定了固定大小的 LinkedBlockingQueue,又或者大小爲 0,只是在生產者和消費者中做中轉用的 SynchronousQueue。

無界隊列:指的是沒有設置固定大小的隊列。這些隊列的特點是可以直接入列,直到溢出。當然現實幾乎不會有到這麼大的容量(超過 Integer.MAX_VALUE),所以從使用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章