24小时热门版块排行榜    

北京石油化工学院2026年研究生招生接收调剂公告
查看: 904  |  回复: 4

微尘、梦想

版主

优秀!!有木有!!!优秀!!有木有!!!优秀!!有木有!!!优秀!!有木有!!!

[求助] 关于java多线程啊~

刚学,莫笑~

情况是这样的……
三个线程:
zhang.start();    //打印出我姓张
for{
//打印出我是主线程
}
wang.start();   //打印出我姓王

情景1:循环9次,没有调用sleep(),由JVM自行管理,执行结果是主线程先执行结束,然后是zhang线程,最后是wang线程。我的理解是计算机执行太快了,所以没有看到希望的结果……

情景2:于是呢,那就循环9000次吧,终于看到效果了,发现主线程打印了几百行,zhang线程才打印一行,然后又是主线程打印数百行。我发现JVM管理线程,时间分配似乎是随机的……

情景3:还是循环9次,这次调用sleep(1),发现即使都中断1微秒,执行时间也没有平均分配,比如说,主线程执行2次,zhang线程执行1次,或者主线程执行1次,zhang线程执行3次等。

情景4:调换一下顺序:
zhang.start();    //打印出我姓张
wang.start();   //打印出我姓王
for{
//打印出我是主线程
}
此时,有三个线程由JVM管理,但是他们的执行顺序也是随机的,并没有按所谓的排队顺序。

问题:就想问一下,当线程(比如说执行了zhang.start(); )交由JVM管理后,那么每一个线程执行时间和执行顺序都是由JVM随机分配的啊????????
回复此楼
任风云变幻,我笑对人生!
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hxyue

兑换贵宾

优秀!!有木有!!!优秀!!有木有!!!优秀!!有木有!!!优秀!!有木有!!!

【答案】应助回帖


余泽成(金币+1): 2011-09-17 18:54:23
余泽成: 谢谢参与应助! 2011-09-17 18:54:34
可以设置优先级,优先级高的执行的可能性更大
这世界只有回不去的,没有过不去的
2楼2011-09-17 11:05:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hxyue

兑换贵宾

优秀!!有木有!!!优秀!!有木有!!!优秀!!有木有!!!优秀!!有木有!!!

【答案】应助回帖


xzhdty(金币+1): 欢迎常来程序语言看看 2011-09-17 15:03:33
微尘、梦想(金币+10): 2011-09-25 16:07:50
虽然说线程是并发运行的。然而实际情况并非如此。对于多线程的程序,任务角色的不同使得每个线程的重要程度也不尽相同,如多个线程在等待获得CPU时间片,往往希望优先级高的线程优先抢占到CPU并得以执行。此外,多个线程交替执行时,不同优先级决定了级别高的线程将得到CPU的次数多一些且时间长一些,这样,高优先级的线程任务处理的效率明显就会更高一些,从而满足一些特殊的需要

但并不是说级别高的线程执行完了才会执行级别低的,那就不叫多线程了
这世界只有回不去的,没有过不去的
3楼2011-09-17 11:13:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

微尘、梦想

专家顾问

优秀!!有木有!!!优秀!!有木有!!!优秀!!有木有!!!优秀!!有木有!!!

引用回帖:
3楼: Originally posted by hxyue at 2011-09-17 11:13:03:
虽然说线程是并发运行的。然而实际情况并非如此。对于多线程的程序,任务角色的不同使得每个线程的重要程度也不尽相同,如多个线程在等待获得CPU时间片,往往希望优先级高的线程优先抢占到CPU并得以执行。此外,多 ...

但是书上说,如果设置优先级,优先级高的会先执行,直到优先级高的执行结束才会执行优先级低的,还有就是不主张设置优先级,会影响程序的可移植性,应该交给JVM自动管理,我该相信谁呢?
另外,对于优先级相同的,JVM又是如何管理的呢?根据运行情况,好像分配时间是随机的,执行的先后顺序也是随机的……
任风云变幻,我笑对人生!
4楼2011-09-17 12:12:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

huycwork

兑换贵宾

优秀!!有木有!!!优秀!!有木有!!!优秀!!有木有!!!优秀!!有木有!!!

【答案】应助回帖

★ ★
余泽成(金币+2): 谢谢参与应助! 2011-09-18 00:16:20
微尘、梦想(金币+10): 2011-09-25 16:08:03
引用回帖:
4楼: Originally posted by 微尘、梦想 at 2011-09-17 12:12:31:
但是书上说,如果设置优先级,优先级高的会先执行,直到优先级高的执行结束才会执行优先级低的,还有就是不主张设置优先级,会影响程序的可移植性,应该交给JVM自动管理,我该相信谁呢?
另外,对于优 ...

虽然不懂Java,但是勉强插嘴下吧。
线程调度算法有很多种的,但是原则上来说还是高优先级抢占执行,同优先级竞争。竞争嘛,自然是有白痴进程抢不到了。
实现优先级有很多不同的数据结构,比如优先级队列,最大堆,这个数据结构形成所谓的调度表。
每当生成一个线程,就会往调度表里面插入一个线程标识。由于数据结构的原因,高优先级总是在前面,但站位次序却不一定是排队的。
每执行完一个时间片,调度程序就会从调度表中选取一个线程继续执行,一般来说,这里的操作应该是将当前线程重新插入到调度表中,再读取其中一个线程。
对你的第一种代码,
start就插入一个zhang线程到调度表
接着就foreach
然后再插入start.wang
肯定就是主线程与zhang互相竞争,竞争和排队又不同了,竞争是概率问题。
第二种代码的话,就是三个线程竞争。
不要设置优先级有两个考虑,一个是JVM的8级优先级并不是与系统完全映射了,不同系统的优先级别是不同的,调整优先级的不二法门是采用三级优先级:最高优先级、最低优先级和正常优先级。第二个问题是设置优先级可能在某些系统导致线程饿死,某些系统上却不会。
漩涡的中心有一块空地,空空的。
5楼2011-09-17 19:00:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 微尘、梦想 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 335求调剂 +3 321* 2026-03-31 4/200 2026-04-01 00:00 by 321*
[考研] 352分-085602-一志愿985 +6 海纳百川Ly 2026-03-29 6/300 2026-03-31 21:06 by yuq
[考研] 086000生物与医药298调剂求助 +3 元元青青 2026-03-31 5/250 2026-03-31 19:58 by vgtyfty
[考研] 284求调剂 +9 小熊~~ 2026-03-31 9/450 2026-03-31 18:22 by 253863592
[考研] 本2一志愿C9-333分,材料科学与工程,求调剂 +9 升升不降 2026-03-31 9/450 2026-03-31 18:01 by 无际的草原
[考研] 282求调剂 不挑专业 求收留 +4 Yam. 2026-03-30 5/250 2026-03-31 14:41 by 王亮_大连医科大
[考研] 一志愿211,335分,0856,求调剂院校和导师 +10 倾____萧 2026-03-27 11/550 2026-03-31 14:32 by fmesaito
[考研] 求调剂 +4 研s. 2026-03-25 4/200 2026-03-31 10:05 by fmesaito
[考研] 085601一志愿中山大学深圳材料工程330求调剂 +5 pipiver 2026-03-30 5/250 2026-03-31 07:37 by JourneyLucky
[考研] 一志愿大连理工大学材料求调剂 +6 Gymno 2026-03-30 6/300 2026-03-31 07:26 by 无际的草原
[考研] 一志愿食品科学与工程083200求调剂 +4 XQTJZ 2026-03-30 4/200 2026-03-31 04:10 by fmesaito
[考研] 303求调剂 +7 DLkz1314. 2026-03-30 7/350 2026-03-30 21:07 by peike
[考研] 285求调剂 +6 AZMK 2026-03-29 9/450 2026-03-30 21:02 by dophin1985
[考研] 一志愿华中师范化学332分求调剂 +3 Lyy930824@ 2026-03-29 3/150 2026-03-30 20:15 by DHUSHUAI
[考研] 0703化学求调剂 +6 丹青奶盖 2026-03-26 8/400 2026-03-30 18:33 by 探123
[考研] 334分 一志愿武理 材料求调剂 +16 李李不服输 2026-03-26 16/800 2026-03-30 17:47 by wangjy2002
[考研] 329求调剂 +8 星野? 2026-03-26 8/400 2026-03-30 13:41 by chemdavid
[考研] 0703化学/290求调剂/本科经历丰富/工科也可 +13 丹青奶盖 2026-03-26 15/750 2026-03-30 12:35 by fangnagu
[考研] 070305高分子化学与物理 304分求调剂 +12 c297914 2026-03-28 12/600 2026-03-29 16:21 by Serene1974
[考研] 305求调剂 +5 哇卢卡库 2026-03-26 5/250 2026-03-27 14:01 by laoshidan
信息提示
请填处理意见