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

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

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

木蟲 (知名作家)

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

| 5 | 1/1 | 返回列表 |
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 280求調(diào)劑 +11 | 咕嚕曉曉 2026-03-18 | 12/600 |
|
|---|---|---|---|---|
|
[考研]
|
Grand777 2026-03-21 | 3/150 |
|
|
[考研] 313求調(diào)劑 +4 | 肆叁貳壹22 2026-03-19 | 4/200 |
|
|
[考研] 307求調(diào)劑 +3 | 余意卿 2026-03-18 | 3/150 |
|
|
[考研] 0856材料專碩353求調(diào)劑 +3 | NIFFFfff 2026-03-20 | 3/150 |
|
|
[考研] 材料專業(yè)求調(diào)劑 +6 | hanamiko 2026-03-18 | 6/300 |
|
|
[考研] 296求調(diào)劑 +6 | www_q 2026-03-18 | 10/500 |
|
|
[考研] 274求調(diào)劑 +10 | S.H1 2026-03-18 | 10/500 |
|
|
[考研] 323求調(diào)劑 +3 | 洼小桶 2026-03-18 | 3/150 |
|
|
[考研] 0817 化學(xué)工程 299分求調(diào)劑 有科研經(jīng)歷 有二區(qū)文章 +22 | rare12345 2026-03-18 | 22/1100 |
|
|
[考研] 一志愿華中農(nóng)業(yè)071010,總分320求調(diào)劑 +3 | 困困困困坤坤 2026-03-20 | 3/150 |
|
|
[考研] 一志愿吉林大學(xué)材料學(xué)碩321求調(diào)劑 +11 | Ymlll 2026-03-18 | 15/750 |
|
|
[考研] 085600材料與化工調(diào)劑 324分 +10 | llllkkkhh 2026-03-18 | 12/600 |
|
|
[考研] 一志愿985,本科211,0817化學(xué)工程與技術(shù)319求調(diào)劑 +10 | Liwangman 2026-03-15 | 10/500 |
|
|
[考研] 344求調(diào)劑 +6 | knight344 2026-03-16 | 7/350 |
|
|
[考研] 277調(diào)劑 +5 | 自由煎餅果子 2026-03-16 | 6/300 |
|
|
[考研] 材料專碩326求調(diào)劑 +6 | 墨煜姒莘 2026-03-15 | 7/350 |
|
|
[考研] 085601求調(diào)劑 +4 | Du.11 2026-03-16 | 4/200 |
|
|
[考研] 302求調(diào)劑 +4 | 小賈同學(xué)123 2026-03-15 | 8/400 |
|
|
[考研] 考研調(diào)劑 +3 | 淇ya_~ 2026-03-17 | 5/250 |
|