黑马程序员技术交流社区

标题: 关于多线程中主线程和子线程的运行速度 [打印本页]

作者: alvinbx    时间: 2014-8-4 17:52
标题: 关于多线程中主线程和子线程的运行速度
本帖最后由 alvinbx 于 2014-8-11 19:27 编辑

刚才试验了十次,主线程的代码都比子线程先运行完(虽然期间有交叉运行),是不是主线程的代码一定会先比子线程先执行完的啊?因为我试验的是打印东西,所以不确定。

作者: xiaoxiaofeng    时间: 2014-8-4 18:03
不会的,两者是靠抢占cpu来执行的,如果两者的优先权一样,则谁先谁后是随机的,因为主线程是先于子线程运行了,所以在指令数差不多时,主线程一般先完。如果主线程的代码量多,指令多,则子线程会先完。
作者: alvinbx    时间: 2014-8-4 18:09
xiaoxiaofeng 发表于 2014-8-4 18:03
不会的,两者是靠抢占cpu来执行的,如果两者的优先权一样,则谁先谁后是随机的,因为主线程是先于子线程运 ...

我刚才试了十次,子线程一抢到CPU就又给主线程抢走了,所以我觉得主线程抢cpu会厉害点。你报的是哪一期的呀,才这么少技术分。42快开学了呢。我也太少了。
作者: xiaoxiaofeng    时间: 2014-8-4 20:16
还没报,在攒技术分呢
作者: xiaoxiaofeng    时间: 2014-8-4 20:19
alvinbx 发表于 2014-8-4 18:09
我刚才试了十次,子线程一抢到CPU就又给主线程抢走了,所以我觉得主线程抢cpu会厉害点。你报的是哪一期的 ...

你可以将主线程的循环弄多些,一个极端的例子就是将主线程无线循环,而子线程有限次打印,那么肯定是子线程线程先完。
作者: fantacyleo    时间: 2014-8-4 20:29
alvinbx 发表于 2014-8-4 18:09
我刚才试了十次,子线程一抢到CPU就又给主线程抢走了,所以我觉得主线程抢cpu会厉害点。你报的是哪一期的 ...

多线程具有随机性,虽然可以从大量实验中得出统计规律,但10次太少了,说明不了问题。不过,具体到你所用的操作系统和JDK版本,是可能出现你说的情况的,而换到别人机器上又不一样了。所以,对多线程程序来说,非常重要的一点就是,除非你用了同步锁、wait、sleep、join、interrupt等线程操控方式,否则不要对线程的执行顺序和执行时间作任何假定。
作者: 段金福    时间: 2014-8-4 20:31
开启新线程之前 主线程分配的时间还未完 :lol
作者: xiaoxiaofeng    时间: 2014-8-4 22:32
alvinbx 发表于 2014-8-4 18:09
我刚才试了十次,子线程一抢到CPU就又给主线程抢走了,所以我觉得主线程抢cpu会厉害点。你报的是哪一期的 ...

赞分中,还没报呢。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2