正在回答 回答被采纳积分+1
同学你好,
1.就是join只是会中断主线程而不会中断相同有join的另外的方法?
同学的后半句理解是对的,前半句有一些偏差,join()方法会中断调用它的线程,在这里因为是主线程在调用,所以主线程被中断,如果是其他线程在调用就是其他线程被中断。
2.然后第一个有sleep时间到了后就会被第二个join方法抢资源
这里是因为第一个线程sleep了或者有其他原因被打断了,它暂时失去了cpu资源,第二个线程就会抢占到cpu资源,与主线程中运行的join()方法无关,如果我们是在第一个线程中调用第二个线程的join()方法,那么第一个线程就会被join()方法中断,我们在主线程中运行两个线程的join()方法只是保证主线程是最后一个运行完毕的,这样存钱和取钱两个线程都能够在主线程执行完之前运行完毕从而得到最终结果。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快~
同学你好,老师根据同学的问题解释一下。
join()方法会中断调用它的线程,而不会中断其他的线程。我们在之前已经启动了两个线程,第二个线程有可能在第一个线程没执行完就会执行。因为我们是在主线程中调用的join()方法,而在主线程中调用join()方法会让主线程中断,并不会让第二个线程中断,两者还会抢夺cpu资源执行自己的方法。所以当第一个线程sleep后,第二个线程会抢占资源执行自己的代码造成数据不一致。join()方法只是保证我们在main()方法中执行完两个线程之后可以得到最后的结果进行打印。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快~
是不是一个join的时候他确实是先执行完才执行下个线程,而多个JOIN就不一定了?第一个JOIN还没执行完第二个就抢着执行导致断层?
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星