Java线程问题
Java线程问题可能图片看不清,我说一下图里面蓝色的部分,是线程的方法,像这样:小S.start();大S.run();蔡康永.run();其他代码主要就是输出一个名字然...
Java线程问题可能图片看不清,我说一下
图里面蓝色的部分,是线程的方法,像这样:
小S.start();
大S.run();
蔡康永.run();
其他代码主要就是输出一个名字然后休眠350毫秒,每个人输出4次
大S和蔡康永都用了run方法,,为什么大S输出还是随机的,而蔡康永总是最后一起输出4个,感觉是start方法的影响。
就这个问题来请教大佬们,顺便问下这段代码的理论运行顺序是怎样的?
就是先执行start方法还是run方法,哪个run方法先执行? 展开
图里面蓝色的部分,是线程的方法,像这样:
小S.start();
大S.run();
蔡康永.run();
其他代码主要就是输出一个名字然后休眠350毫秒,每个人输出4次
大S和蔡康永都用了run方法,,为什么大S输出还是随机的,而蔡康永总是最后一起输出4个,感觉是start方法的影响。
就这个问题来请教大佬们,顺便问下这段代码的理论运行顺序是怎样的?
就是先执行start方法还是run方法,哪个run方法先执行? 展开
2个回答
展开全部
线程是通过调用start方法来启动,启动之后由系统分配时间去执行线程run方法,直接调用线程的run方法与调用一个对象的普通方法没有区别。
至于你的执行结果是因为主线程main方法与小s的线程交替执行得到的,当你修改休眠的时间
为更短或者不休眠时,会获得不一样的结果。至于最后连续输出的蔡康永是因为他没有获得执行机会,当程序启动后小s和大s交替获得了执行机会,执行完后才轮到他,所以他最后输出4次。
至于你的执行结果是因为主线程main方法与小s的线程交替执行得到的,当你修改休眠的时间
为更短或者不休眠时,会获得不一样的结果。至于最后连续输出的蔡康永是因为他没有获得执行机会,当程序启动后小s和大s交替获得了执行机会,执行完后才轮到他,所以他最后输出4次。
更多追问追答
追问
那我的代码里有线程休眠的语句,如果直接调用run方法,理解成实际上休眠语句是失效的,运行只是按照顺序调用run方法,这样对嘛?
感觉这是你说的意思
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询