Java多線程編程之限制優(yōu)先級
更新時間:2006年10月13日 00:00:00 作者:
限制線程優(yōu)先級和調(diào)度
Java 線程模型涉及可以動態(tài)更改的線程優(yōu)先級。本質(zhì)上,線程的優(yōu)先級是從 1 到 10 之間的一個數(shù)字,數(shù)字越大表明任務(wù)越緊急。JVM 標(biāo)準(zhǔn)首先調(diào)用優(yōu)先級較高的線程,然后才調(diào)用優(yōu)先級較低的線程。但是,該標(biāo)準(zhǔn)對具有相同優(yōu)先級的線程的處理是隨機(jī)的。如何處理這些線程取決于基層的操作系統(tǒng)策略。在某些情況下,優(yōu)先級相同的線程分時運(yùn)行;在另一些情況下,線程將一直運(yùn)行到結(jié)束。請記住,Java 支持 10 個優(yōu)先級,基層操作系統(tǒng)支持的優(yōu)先級可能要少得多,這樣會造成一些混亂。因此,只能將優(yōu)先級作為一種很粗略的工具使用。最后的控制可以通過明智地使用 yield() 函數(shù)來完成。通常情況下,請不要依靠線程優(yōu)先級來控制線程的狀態(tài)。
小結(jié)
本文說明了在 Java 程序中如何使用線程。像是否應(yīng)該使用線程這樣的更重要的問題在很大程序上取決于手頭的應(yīng)用程序。決定是否在應(yīng)用程序中使用多線程的一種方法是,估計可以并行運(yùn)行的代碼量。并記住以下幾點(diǎn):
使用多線程不會增加 CPU 的能力。但是如果使用 JVM 的本地線程實(shí)現(xiàn),則不同的線程可以在不同的處理器上同時運(yùn)行(在多 CPU 的機(jī)器中),從而使多 CPU 機(jī)器得到充分利用。
如果應(yīng)用程序是計算密集型的,并受 CPU 功能的制約,則只有多 CPU 機(jī)器能夠從更多的線程中受益。
當(dāng)應(yīng)用程序必須等待緩慢的資源(如網(wǎng)絡(luò)連接或數(shù)據(jù)庫連接)時,或者當(dāng)應(yīng)用程序是非交互式的時,多線程通常是有利的。
基于 Internet 的軟件有必要是多線程的;否則,用戶將感覺應(yīng)用程序反映遲鈍。例如,當(dāng)開發(fā)要支持大量客戶機(jī)的服務(wù)器時,多線程可以使編程較為容易。在這種情況下,每個線程可以為不同的客戶或客戶組服務(wù),從而縮短了響應(yīng)時間。
某些程序員可能在 C 和其他語言中使用過線程,在那些語言中對線程沒有語言支持。這些程序員可能通常都被搞得對線程失去了信心。
Java 線程模型涉及可以動態(tài)更改的線程優(yōu)先級。本質(zhì)上,線程的優(yōu)先級是從 1 到 10 之間的一個數(shù)字,數(shù)字越大表明任務(wù)越緊急。JVM 標(biāo)準(zhǔn)首先調(diào)用優(yōu)先級較高的線程,然后才調(diào)用優(yōu)先級較低的線程。但是,該標(biāo)準(zhǔn)對具有相同優(yōu)先級的線程的處理是隨機(jī)的。如何處理這些線程取決于基層的操作系統(tǒng)策略。在某些情況下,優(yōu)先級相同的線程分時運(yùn)行;在另一些情況下,線程將一直運(yùn)行到結(jié)束。請記住,Java 支持 10 個優(yōu)先級,基層操作系統(tǒng)支持的優(yōu)先級可能要少得多,這樣會造成一些混亂。因此,只能將優(yōu)先級作為一種很粗略的工具使用。最后的控制可以通過明智地使用 yield() 函數(shù)來完成。通常情況下,請不要依靠線程優(yōu)先級來控制線程的狀態(tài)。
小結(jié)
本文說明了在 Java 程序中如何使用線程。像是否應(yīng)該使用線程這樣的更重要的問題在很大程序上取決于手頭的應(yīng)用程序。決定是否在應(yīng)用程序中使用多線程的一種方法是,估計可以并行運(yùn)行的代碼量。并記住以下幾點(diǎn):
使用多線程不會增加 CPU 的能力。但是如果使用 JVM 的本地線程實(shí)現(xiàn),則不同的線程可以在不同的處理器上同時運(yùn)行(在多 CPU 的機(jī)器中),從而使多 CPU 機(jī)器得到充分利用。
如果應(yīng)用程序是計算密集型的,并受 CPU 功能的制約,則只有多 CPU 機(jī)器能夠從更多的線程中受益。
當(dāng)應(yīng)用程序必須等待緩慢的資源(如網(wǎng)絡(luò)連接或數(shù)據(jù)庫連接)時,或者當(dāng)應(yīng)用程序是非交互式的時,多線程通常是有利的。
基于 Internet 的軟件有必要是多線程的;否則,用戶將感覺應(yīng)用程序反映遲鈍。例如,當(dāng)開發(fā)要支持大量客戶機(jī)的服務(wù)器時,多線程可以使編程較為容易。在這種情況下,每個線程可以為不同的客戶或客戶組服務(wù),從而縮短了響應(yīng)時間。
某些程序員可能在 C 和其他語言中使用過線程,在那些語言中對線程沒有語言支持。這些程序員可能通常都被搞得對線程失去了信心。
相關(guān)文章
JSP實(shí)現(xiàn)登錄功能之添加驗(yàn)證碼
jsp登陸驗(yàn)證,網(wǎng)頁登陸驗(yàn)證帶驗(yàn)證碼校驗(yàn),登錄功能之添加驗(yàn)證碼,非常不錯,具有參考借鑒價值,需要的朋友參考下吧2016-12-12JSP Spring ApplicationContext的國際化支持
這篇文章主要介紹了JSP Spring ApplicationContext的國際化支持的相關(guān)資料,需要的朋友可以參考下2017-04-04JSP Session超時設(shè)置的實(shí)現(xiàn)方法
這篇文章主要介紹了JSP Session超時設(shè)置的實(shí)現(xiàn)方法的相關(guān)資料,這里提供三種方法幫助大家學(xué)習(xí)理解這部分內(nèi)容,需要的朋友可以參考下2017-09-09實(shí)例解析JSP中EL表達(dá)式的各種運(yùn)用
這篇文章主要介紹了JSP中EL表達(dá)式的各種運(yùn)用,比如用EL處理數(shù)學(xué)運(yùn)算、內(nèi)置對象以及數(shù)據(jù)的存取等,代碼示例都相當(dāng)實(shí)用,需要的朋友可以參考下2016-04-04JSP+Servlet制作Java Web登錄功能的全流程解析
Web頁面登陸功能包括前端的界面以及后臺的數(shù)據(jù)庫寫入,這里我們總結(jié)了JSP+Servlet制作Java Web登陸功能的全流程解析,需要的朋友可以參考下2016-05-05jsp基于XML實(shí)現(xiàn)用戶登錄與注冊的實(shí)例解析(附源碼)
這篇文章主要介紹了jsp基于XML實(shí)現(xiàn)用戶登錄與注冊的實(shí)例解析,xml做數(shù)據(jù)庫實(shí)現(xiàn)用戶登錄與注冊,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2015-11-11