Java线程问题

Java线程问题可能图片看不清,我说一下图里面蓝色的部分,是线程的方法,像这样:小S.start();大S.run();蔡康永.run();其他代码主要就是输出一个名字然... Java线程问题可能图片看不清,我说一下
图里面蓝色的部分,是线程的方法,像这样:
小S.start();
大S.run();
蔡康永.run();
其他代码主要就是输出一个名字然后休眠350毫秒,每个人输出4次

大S和蔡康永都用了run方法,,为什么大S输出还是随机的,而蔡康永总是最后一起输出4个,感觉是start方法的影响。

就这个问题来请教大佬们,顺便问下这段代码的理论运行顺序是怎样的?
就是先执行start方法还是run方法,哪个run方法先执行?
展开
 我来答
谭加巧
2018-05-11 · TA获得超过186个赞
知道小有建树答主
回答量:230
采纳率:79%
帮助的人:103万
展开全部
线程是通过调用start方法来启动,启动之后由系统分配时间去执行线程run方法,直接调用线程的run方法与调用一个对象的普通方法没有区别。
至于你的执行结果是因为主线程main方法与小s的线程交替执行得到的,当你修改休眠的时间
为更短或者不休眠时,会获得不一样的结果。至于最后连续输出的蔡康永是因为他没有获得执行机会,当程序启动后小s和大s交替获得了执行机会,执行完后才轮到他,所以他最后输出4次。
更多追问追答
追问
那我的代码里有线程休眠的语句,如果直接调用run方法,理解成实际上休眠语句是失效的,运行只是按照顺序调用run方法,这样对嘛?
感觉这是你说的意思
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
GTA小鸡
高粉答主

2018-05-11 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2.6万
采纳率:78%
帮助的人:1.3亿
展开全部
调用start()方法将启动一个新线程并在该线程中执行该类的run()方法。而手动调用run()方法则是在当前线程中执行,此时run()方法和一般方法没有区别。所以,这个程序共有两个线程,第一个线程main线程中依次跑Sleep2和Sleep3对象的run方法,第二个线程中跑Sleep1对象的run方法。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式