我們有一個桌面應用程序,它具有一些後臺線程,並且由於執行外部命令,還需要線程來處理out和err流。新線程與重用線程
我們可以創建新線程並讓它們完成或者我們可以重用線程。重用線程會有一些好處,例如在性能或內存使用的情況下?
我們有一個桌面應用程序,它具有一些後臺線程,並且由於執行外部命令,還需要線程來處理out和err流。新線程與重用線程
我們可以創建新線程並讓它們完成或者我們可以重用線程。重用線程會有一些好處,例如在性能或內存使用的情況下?
沒有辦法重用Thread
因爲Thread
一旦完成(退出run()
法)及其Thread.State
通行證從Thread.State.RUNNABLE
到Thread.State.TERMINATED
和線程類沒有設置其狀態重用它setState(Thread.State)
方法。
但是我們可以幫助Java中的線程池。在線程池的情況下,創建一組固定大小的線程。線程池中的線程被拉出並由服務提供商分配作業。作業完成後,線程再次包含在線程池中。
利用線程池的:
JDK 1.5及以上,你應該儘量不要創建線程。
請參考:http://docs.oracle.com/javase/tutorial/essential/concurrency/pools.html。嘗試使用線程池執行器。
重用線程具有以下優勢:
正在創建一個線程對象,比創建一個普通對象貴得多嗎? –
如果通過普通對象表示「new Object()」,那麼是 - 只要看看Thread類的構造函數,以獲得創建新線程時發生的事情的印象 –
定義「重用」的線程。一個線程只能啓動一次。 – TheLostMind
使用線程池。 – UmNyobe
線程共享類的重用線程。線程池是很好的選擇。 –