任何人都可以引導我使用關於線程和線程池的例子嗎?它們之間有什麼區別?哪個最適合...?它的缺點是什麼線程和線程池之間的區別
回答
由於線程只能運行一次,所以你必須爲每個任務使用一個線程。但是,創建和啓動線程有點昂貴,並且可能導致太多線程在等待執行(現在不記得此名稱的確切名稱) - 這進一步降低了性能。
線程池 - 顧名思義 - 一個始終運行的工作線程池。那些線程通常從列表中獲取任務,執行它們,然後嘗試執行下一個任務。如果沒有任務,線程將等待。
使用線程池有幾個優點:
- 您不必創建每個任務
- 你通常有最佳線程數爲您的系統線程(取決於JVM太)
- 您可以專注於寫作任務,並使用線程池來管理基礎設施
編輯:這裏是一些併發相當不錯的文章一般:Sutter's Mill,查看更多鏈接的底部。雖然它們主要是爲C/C++編寫的,但一般概念是相同的,因爲它也描述了併發解決方案和硬件之間的相互依賴性。瞭解併發性能問題的好文章是this article on drdobbs.com。
由於其漂亮和清楚明白..你可以指導我通過舉一個簡單的例子 –
「太多的線程在等待執行(不記得確切的名字爲這個現在)」。您正在尋找「飢餓」這個詞嗎? – SteeveDroz
@Otatur'starvation'就是這個的一個症狀,因爲它意味着一個線程不會獲得它所需要的資源(比如CPU時間)。 'oversubscription'似乎是我正在尋找的術語。 – Thomas
線程池是分配用於執行統一任務的線程的集合。 使用線程池模式的優點是您可以定義允許多少個線程同時執行。這是爲了避免由於CPU負載過高或內存不足而導致服務器崩潰,例如服務器的硬件容量只能支持每秒100個請求。
數據庫池與線程池有相似的概念。
該模式廣泛應用於大多數後端服務器的應用程序中。
雖然線程是執行任務的單元。
- 1. windows線程池和CLR線程池有什麼區別
- 2. BackgroundWorker和線程之間的區別?
- 3. thread.start()和executor.submit(線程)之間的區別
- 4. 時間多線程和超線程之間有什麼區別?
- 5. SwingUtilities線程和AWT.EventQueue線程之間的區別
- 6. 線程#運行和線程#喚醒之間的區別?
- 7. 工作線程和backgroundworker線程之間的區別?
- 8. UI線程和其他線程之間的區別
- 9. openMP和線程池有什麼區別?
- 10. 使用線程池和普通線程有什麼區別?
- 11. 石英線程池和任務執行程序之間的區別
- 12. 線程狀態之間的區別
- 13. 固定線程池和預定線程池之間的Java差異
- 14. 關於GCD和線程類別之間的區別的疑問
- 15. Android中進程,活動,線程和任務之間的區別
- 16. python線程和綠色線程中鎖定行爲之間的任何區別?
- 17. 用戶級線程和協程之間有什麼區別?
- 18. 應用程序域和應用程序池之間的區別?
- 19. Netty - NioWorker池和工作線程池之間的關係
- 20. 線程的mmap中的MAP_PRIVATE和MAP_SHARED之間的區別
- 21. 新的線程()和線程池?
- 22. 什麼是Asynctask和android中的線程之間的區別?
- 23. 線程池中的線程
- 24. OSX和LINUX上POSIX線程之間的區別?
- 25. 線程和Map-Reduce處理之間的區別?
- 26. 綁定服務和線程之間的區別
- 27. .NET中線程中斷和中斷之間的區別
- 28. DART隔離和線程之間的區別(Java,C#)
- 29. Thread.sleep()和斷點之間的區別(掛起線程)
- 30. 期貨和設置內線程之間的區別
你看[這裏](http://download.oracle.com/javase/tutorial/essential/concurrency/index.html)? –