| 5 | 1/1 | 返回列表 |
| 查看: 895 | 回復(fù): 4 | ||
| 當(dāng)前只顯示滿足指定條件的回帖,點擊這里查看本話題的所有回帖 | ||
微塵、夢想木蟲 (知名作家)
|
[求助]
關(guān)于java多線程啊~
|
|
剛學(xué),莫笑~![]() 情況是這樣的…… 三個線程: zhang.start(); //打印出我姓張 for{ //打印出我是主線程 } wang.start(); //打印出我姓王 情景1:循環(huán)9次,沒有調(diào)用sleep(),由JVM自行管理,執(zhí)行結(jié)果是主線程先執(zhí)行結(jié)束,然后是zhang線程,最后是wang線程。我的理解是計算機(jī)執(zhí)行太快了,所以沒有看到希望的結(jié)果…… 情景2:于是呢,那就循環(huán)9000次吧,終于看到效果了,發(fā)現(xiàn)主線程打印了幾百行,zhang線程才打印一行,然后又是主線程打印數(shù)百行。我發(fā)現(xiàn)JVM管理線程,時間分配似乎是隨機(jī)的…… 情景3:還是循環(huán)9次,這次調(diào)用sleep(1),發(fā)現(xiàn)即使都中斷1微秒,執(zhí)行時間也沒有平均分配,比如說,主線程執(zhí)行2次,zhang線程執(zhí)行1次,或者主線程執(zhí)行1次,zhang線程執(zhí)行3次等。 情景4:調(diào)換一下順序: zhang.start(); //打印出我姓張 wang.start(); //打印出我姓王 for{ //打印出我是主線程 } 此時,有三個線程由JVM管理,但是他們的執(zhí)行順序也是隨機(jī)的,并沒有按所謂的排隊順序。 問題:就想問一下,當(dāng)線程(比如說執(zhí)行了zhang.start(); )交由JVM管理后,那么每一個線程執(zhí)行時間和執(zhí)行順序都是由JVM隨機(jī)分配的???????? |

木蟲 (知名作家)

至尊木蟲 (職業(yè)作家)

至尊木蟲 (職業(yè)作家)
|
雖然說線程是并發(fā)運行的。然而實際情況并非如此。對于多線程的程序,任務(wù)角色的不同使得每個線程的重要程度也不盡相同,如多個線程在等待獲得CPU時間片,往往希望優(yōu)先級高的線程優(yōu)先搶占到CPU并得以執(zhí)行。此外,多個線程交替執(zhí)行時,不同優(yōu)先級決定了級別高的線程將得到CPU的次數(shù)多一些且時間長一些,這樣,高優(yōu)先級的線程任務(wù)處理的效率明顯就會更高一些,從而滿足一些特殊的需要 但并不是說級別高的線程執(zhí)行完了才會執(zhí)行級別低的,那就不叫多線程了 |

金蟲 (著名寫手)
|
雖然不懂Java,但是勉強(qiáng)插嘴下吧。 線程調(diào)度算法有很多種的,但是原則上來說還是高優(yōu)先級搶占執(zhí)行,同優(yōu)先級競爭。競爭嘛,自然是有白癡進(jìn)程搶不到了。 ![]() 實現(xiàn)優(yōu)先級有很多不同的數(shù)據(jù)結(jié)構(gòu),比如優(yōu)先級隊列,最大堆,這個數(shù)據(jù)結(jié)構(gòu)形成所謂的調(diào)度表。 每當(dāng)生成一個線程,就會往調(diào)度表里面插入一個線程標(biāo)識。由于數(shù)據(jù)結(jié)構(gòu)的原因,高優(yōu)先級總是在前面,但站位次序卻不一定是排隊的。 每執(zhí)行完一個時間片,調(diào)度程序就會從調(diào)度表中選取一個線程繼續(xù)執(zhí)行,一般來說,這里的操作應(yīng)該是將當(dāng)前線程重新插入到調(diào)度表中,再讀取其中一個線程。 對你的第一種代碼, start就插入一個zhang線程到調(diào)度表 接著就foreach 然后再插入start.wang 肯定就是主線程與zhang互相競爭,競爭和排隊又不同了,競爭是概率問題。 第二種代碼的話,就是三個線程競爭。 不要設(shè)置優(yōu)先級有兩個考慮,一個是JVM的8級優(yōu)先級并不是與系統(tǒng)完全映射了,不同系統(tǒng)的優(yōu)先級別是不同的,調(diào)整優(yōu)先級的不二法門是采用三級優(yōu)先級:最高優(yōu)先級、最低優(yōu)先級和正常優(yōu)先級。第二個問題是設(shè)置優(yōu)先級可能在某些系統(tǒng)導(dǎo)致線程餓死,某些系統(tǒng)上卻不會。 |

| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 326求調(diào)劑 +5 | 諾貝爾化學(xué)獎覬?/a> 2026-03-15 | 8/400 |
|
|---|---|---|---|---|
|
[考研] 0703化學(xué)調(diào)劑 +11 | 妮妮ninicgb 2026-03-15 | 15/750 |
|
|
[考研] 生物學(xué)調(diào)劑 +3 | Surekei 2026-03-21 | 3/150 |
|
|
[考研] 材料學(xué)碩333求調(diào)劑 +3 | 北道巷 2026-03-18 | 3/150 |
|
|
[考研] 317求調(diào)劑 +9 | 申子申申 2026-03-19 | 15/750 |
|
|
[考研] 306求0703調(diào)劑一志愿華中師范 +5 | 紙魚ly 2026-03-21 | 5/250 |
|
|
[考研] 330求調(diào)劑0854 +3 | assdll 2026-03-21 | 3/150 |
|
|
[考研] 0856材料專碩353求調(diào)劑 +3 | NIFFFfff 2026-03-20 | 3/150 |
|
|
[考研] 306求調(diào)劑 +4 | chuanzhu川燭 2026-03-18 | 4/200 |
|
|
[考研] 321求調(diào)劑 +9 | 何潤采123 2026-03-18 | 11/550 |
|
|
[考研] 319求調(diào)劑 +3 | 小力氣珂珂 2026-03-20 | 3/150 |
|
|
[考研] 一志愿吉林大學(xué)材料學(xué)碩321求調(diào)劑 +11 | Ymlll 2026-03-18 | 15/750 |
|
|
[考研] 求調(diào)劑 +3 | @taotao 2026-03-20 | 3/150 |
|
|
[考研] 工科材料085601 279求調(diào)劑 +7 | 困于星晨 2026-03-17 | 9/450 |
|
|
[考研] 求調(diào)劑 +3 | 暗涌afhb 2026-03-16 | 3/150 |
|
|
[考研] 生物學(xué)調(diào)劑招人。! +3 | 山海天嵐 2026-03-17 | 4/200 |
|
|
[考研] 266求調(diào)劑 +5 | 陽陽哇塞 2026-03-14 | 10/500 |
|
|
[考研] 0703化學(xué)調(diào)劑 +3 | 妮妮ninicgb 2026-03-17 | 3/150 |
|
|
[考研] 考研調(diào)劑 +3 | 淇ya_~ 2026-03-17 | 5/250 |
|
|
[考研] 機(jī)械專碩325,尋找調(diào)劑院校 +3 | y9999 2026-03-15 | 5/250 |
|