2014-12-13 61 views
1

我已經在很多地方讀取發佈線程,該線程池減少線程創建開銷,這會導致更高的性能。但是一旦一個線程完成執行它的運行方法,就會進入死/終止狀態,這意味着它可以重新啓動。如何創建和線程池

那麼,如何線程池手柄釋放線程的?它是否真的讓線程爲下一個任務提供服務,或者它在內部每次提交任務時都會創建新的線程?

+2

它重新使用它創建的線程。這就是它減少線程創建的方式。它被記錄下來,並且源代碼可用。 – 2014-12-13 18:37:08

+0

它不釋放它們。它在不使用時將它們保存在可用列表中。 – Kevin 2014-12-13 18:38:54

+0

我明白了。它永遠不允許線程到達終止狀態,除非它需要終止線程。 – 2014-12-13 19:18:23

回答

1

線程池內部有列表,它是正在使用的和線程的佔位符,當有需求,並將它們添加到這個列表,當它完成了執行或創建一個新的時一個終止,並通過增長保持他們數量還是減少,這取決於您是否要求緩存或固定線程池。

+0

我沒有看到源代碼,其中的線程將添加和檢索的要求,正如我上面的評論,它看起來像線程保持活力和哪個線程拿起傳入的任務,開始與他們合作的任何名單。希望我的理解是正確的 – 2014-12-13 19:23:08

+0

我不確定你在哪裏看,但看到[this](http://j6a.ru/classcom_1_1sun_1_1corba_1_1se_1_1impl_1_1orbutil_1_1threadpool_1_1_thread_pool_impl.html#ae115183d2b25be0185d7e6afc9d60427)供您參考。我會建議你將src.zip附加到你的IDE中,並通過代碼。 – SMA 2014-12-14 06:19:30

0

固定大小的線程池保留線程,直到關機。

的緩存的線程池保持線程缺省爲60秒。