明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

Java多線程編程之局限優(yōu)先級(jí)

[摘要]限制線程優(yōu)先級(jí)和調(diào)度   Java 線程模型涉及可以動(dòng)態(tài)更改的線程優(yōu)先級(jí)。本質(zhì)上,線程的優(yōu)先級(jí)是從 1 到 10 之間的一個(gè)數(shù)字,數(shù)字越大表明任務(wù)越緊急。JVM 標(biāo)準(zhǔn)首先調(diào)用優(yōu)先級(jí)較高的線程,然后才調(diào)用優(yōu)先級(jí)較低的線程。但是,該標(biāo)準(zhǔn)對(duì)具有相同優(yōu)先級(jí)的線程的處理是隨機(jī)的。如何處理這些線程取決于基層的...
限制線程優(yōu)先級(jí)和調(diào)度

  Java 線程模型涉及可以動(dòng)態(tài)更改的線程優(yōu)先級(jí)。本質(zhì)上,線程的優(yōu)先級(jí)是從 1 到 10 之間的一個(gè)數(shù)字,數(shù)字越大表明任務(wù)越緊急。JVM 標(biāo)準(zhǔn)首先調(diào)用優(yōu)先級(jí)較高的線程,然后才調(diào)用優(yōu)先級(jí)較低的線程。但是,該標(biāo)準(zhǔn)對(duì)具有相同優(yōu)先級(jí)的線程的處理是隨機(jī)的。如何處理這些線程取決于基層的操作系統(tǒng)策略。在某些情況下,優(yōu)先級(jí)相同的線程分時(shí)運(yùn)行;在另一些情況下,線程將一直運(yùn)行到結(jié)束。請(qǐng)記住,Java 支持 10 個(gè)優(yōu)先級(jí),基層操作系統(tǒng)支持的優(yōu)先級(jí)可能要少得多,這樣會(huì)造成一些混亂。因此,只能將優(yōu)先級(jí)作為一種很粗略的工具使用。最后的控制可以通過明智地使用 yield() 函數(shù)來完成。通常情況下,請(qǐng)不要依靠線程優(yōu)先級(jí)來控制線程的狀態(tài)。

  小結(jié)

  本文說明了在 Java 程序中如何使用線程。像是否應(yīng)該使用線程這樣的更重要的問題在很大程序上取決于手頭的應(yīng)用程序。決定是否在應(yīng)用程序中使用多線程的一種方法是,估計(jì)可以并行運(yùn)行的代碼量。并記住以下幾點(diǎn):

  使用多線程不會(huì)增加 CPU 的能力。但是如果使用 JVM 的本地線程實(shí)現(xiàn),則不同的線程可以在不同的處理器上同時(shí)運(yùn)行(在多 CPU 的機(jī)器中),從而使多 CPU 機(jī)器得到充分利用。

  如果應(yīng)用程序是計(jì)算密集型的,并受 CPU 功能的制約,則只有多 CPU 機(jī)器能夠從更多的線程中受益。

  當(dāng)應(yīng)用程序必須等待緩慢的資源(如網(wǎng)絡(luò)連接或數(shù)據(jù)庫連接)時(shí),或者當(dāng)應(yīng)用程序是非交互式的時(shí),多線程通常是有利的。

  基于 Internet 的軟件有必要是多線程的;否則,用戶將感覺應(yīng)用程序反映遲鈍。例如,當(dāng)開發(fā)要支持大量客戶機(jī)的服務(wù)器時(shí),多線程可以使編程較為容易。在這種情況下,每個(gè)線程可以為不同的客戶或客戶組服務(wù),從而縮短了響應(yīng)時(shí)間。

  某些程序員可能在 C 和其他語言中使用過線程,在那些語言中對(duì)線程沒有語言支持。這些程序員可能通常都被搞得對(duì)線程失去了信心。