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

|
雖然不懂Java,但是勉強插嘴下吧。 線程調(diào)度算法有很多種的,但是原則上來說還是高優(yōu)先級搶占執(zhí)行,同優(yōu)先級競爭。競爭嘛,自然是有白癡進程搶不到了。 ![]() 實現(xiàn)優(yōu)先級有很多不同的數(shù)據(jù)結(jié)構(gòu),比如優(yōu)先級隊列,最大堆,這個數(shù)據(jù)結(jié)構(gòu)形成所謂的調(diào)度表。 每當生成一個線程,就會往調(diào)度表里面插入一個線程標識。由于數(shù)據(jù)結(jié)構(gòu)的原因,高優(yōu)先級總是在前面,但站位次序卻不一定是排隊的。 每執(zhí)行完一個時間片,調(diào)度程序就會從調(diào)度表中選取一個線程繼續(xù)執(zhí)行,一般來說,這里的操作應(yī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)導致線程餓死,某些系統(tǒng)上卻不會。 |

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

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

木蟲 (知名作家)

| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 265求調(diào)劑 +6 | 小木蟲085600 2026-03-27 | 6/300 |
|
|---|---|---|---|---|
|
[考研] 315分求調(diào)劑 +6 | 26考研上岸版26 2026-03-26 | 6/300 |
|
|
[考研] 328求調(diào)劑 +6 | 嗯滴的基本都 2026-03-27 | 6/300 |
|
|
[考研] 22408 359分調(diào)劑 +3 | Qshers 2026-03-27 | 3/150 |
|
|
[考研] 調(diào)劑 +3 | 李嘉圖·S·路 2026-03-27 | 3/150 |
|
|
[論文投稿] Journal of Mechanical Science and Technology +3 | Russ_ss 2026-03-25 | 5/250 |
|
|
[考研] 336材料求調(diào)劑 +7 | 陳瀅瑩 2026-03-26 | 9/450 |
|
|
[考研] 求調(diào)劑 一志愿 本科 北科大 化學 343 +6 | 13831862839 2026-03-24 | 7/350 |
|
|
[考研] 一志愿華理,數(shù)一英一285求A區(qū)調(diào)劑 +8 | AZMK 2026-03-25 | 10/500 |
|
|
[考研] 總分322求生物學/生化與分子/生物信息學相關(guān)調(diào)劑 +5 | 星沉uu 2026-03-26 | 6/300 |
|
|
[考研] 一志愿上海交大生物與醫(yī)藥專碩324分,求調(diào)劑 +6 | jiajunX 2026-03-22 | 6/300 |
|
|
[考研] 303求調(diào)劑 +6 | 藍山月 2026-03-25 | 6/300 |
|
|
[考研] 332求調(diào)劑 +6 | 032500 2026-03-25 | 6/300 |
|
|
[考研] 347求調(diào)劑 +4 | L when 2026-03-25 | 4/200 |
|
|
[考研] 284求調(diào)劑 +15 | Zhao anqi 2026-03-22 | 15/750 |
|
|
[考研] 086003食品工程求調(diào)劑 +6 | 淼淼111 2026-03-24 | 6/300 |
|
|
[考研] 0703化學求調(diào)劑 +6 | 奶油草莓. 2026-03-22 | 7/350 |
|
|
[考研] 材料專碩331求調(diào)劑 +4 | 鮮當牛 2026-03-24 | 4/200 |
|
|
[考研] 315分,誠求調(diào)劑,材料與化工085600 +3 | 13756423260 2026-03-22 | 3/150 |
|
|
[考研] 一志愿北京化工大學070300 學碩336求調(diào)劑 +5 | vv迷 2026-03-21 | 8/400 |
|