Java多線程編程之限制優先級程序員
限制線程優先級和調度數據庫
做者:兄弟連 www.itxdl.cn編程
Java 線程模型涉及能夠動態更改的線程優先級。本質上,線程的優先級是從 1 到 10 之間的一個數字,數字越大代表任務越緊急。JVM 標準首先調用優先級較高的線程,而後才調用優先級較低的線程。可是,該標準對具備相同優先級的線程的處理是隨機的。如何處理這些線程取決於基層的操做系統策略。在某些狀況下,優先級相同的線程分時運行;在另外一些狀況下,線程將一直運行到結束。請記住,Java 支持 10 個優先級,基層操做系統支持的優先級可能要少得多,這樣會形成一些混亂。所以,只能將優先級做爲一種很粗略的工具使用。最後的控制能夠經過明智地使用 yield() 函數來完成。一般狀況下,請不要依靠線程優先級來控制線程的狀態。服務器
小結網絡
本文說明了在 Java 程序中如何使用線程。像是否應該使用線程這樣的更重要的問題在很大程序上取決於手頭的應用程序。決定是否在應用程序中使用多線程的一種方法是,估計能夠並行運行的代碼量。並記住如下幾點:多線程
使用多線程不會增長 CPU 的能力。可是若是使用 JVM 的本地線程實現,則不一樣的線程能夠在不一樣的處理器上同時運行(在多 CPU 的機器中),從而使多 CPU 機器獲得充分利用。函數
若是應用程序是計算密集型的,並受 CPU 功能的制約,則只有多 CPU 機器可以從更多的線程中受益。工具
當應用程序必須等待緩慢的資源(如網絡鏈接或數據庫鏈接)時,或者當應用程序是非交互式的時,多線程一般是有利的。操作系統
基於 Internet 的軟件有必要是多線程的;不然,用戶將感受應用程序反映遲鈍。例如,當開發要支持大量客戶機的服務器時,多線程可使編程較爲容易。在這種狀況下,每一個線程能夠爲不一樣的客戶或客戶組服務,從而縮短了響應時間。線程
某些程序員可能在 C 和其餘語言中使用過線程,在那些語言中對線程沒有語言支持。這些程序員可能一般都被搞得對線程失去了信心。