A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© H-Deka 中级黑马   /  2014-3-26 11:59  /  990 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

main方法中,先后启动两个线程,具体先执行哪一个线程跟启动的顺序没关系吧!也就是书写代码的顺序

5 个回复

倒序浏览
进入main方法中,
先启动main线程,,

执行后,,在按照顺序执行。。

执行下一个线程,,只是在执行到下一个线程时,,,他们有替换动作




回复 使用道具 举报
不是的  

mian 和其他俩个线程
都是谁抢到cpu得执行权谁才能执行

跟代码写的先后顺序无关
回复 使用道具 举报
有没有关系的帮你分析一下自己理一理
1.之所以说有关系是因为开始的时候有关系,当两个线程都开始运行后就没有什么区别了

2.首先从主线程开始 main thread执行

3.然后第一个Thread执行,假如第一个线程开启的瞬间就把程序执行完了,CPU还没有执行到第二条程序呢,这时候你说有没有关系呢?

4.当然还是看具体的分析情况,第一个线程先开启也不一定先执行第一个啊,假如第一个线程刚开启,CPU就切换到了第二个线程,那么瞬间第二条线程把程序执行完了也有可能啊!

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 Zero霖 于 2014-3-26 13:23 编辑

没啥关系,只要启动这两个线程之间没有插入比如某个线程调用join()方法的语句就行。比如t1.start();t2.start();此时有3个线程,主线程、t1和t2线程,这3个线程会共同抢夺CPU的执行权。但如果是t1.start();t1.join();t2.start();当主线程执行到t1.join()语句时,主线程被冻结并释放CPU的执行权,此时t1线程已经开启,而t2线程没开启,故只有t1有执行资格,所以t1抢到了CPU的执行权,等t1执行完后主线程被唤醒再开启t2线程,然后主线程和t2线程共同抢夺CPU的执行权。

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
线程的启动的顺序跟书写代码的顺序没关系吧,线程启动后会进入可运行状态,不一定是启动后就运行线程,这要看谁抢到cpu资源。
当然如果你启动线程间相隔了很多的代码,那可能第一个线程会先抢到cpu资源.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马