采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师,您好! join底层调用了子线程对象的wait方法,等待子线程执行完毕后,就会调用子线程对象的notify,这样主线程就会继续执行。 我在想,如果子线程执行的很快,还没有等到主线程执行join方法,就执行完毕后,会不会造成永久等待? 我用如下代码演示,发现并没有出现永久等待的现象。但是根据原理,会发现如下的代码就会出现永久等待我想问老师,是否更低层做了一些优化,期待老师的回复!
小伙伴的思考很棒!点赞。
join不会永久等待,是因为在join让主线程等待前,会先判断子线程是否已经运行完毕了,如果发现已经运行完毕,就不再去让主线程wait了
但是第二种情况,永久等待的原因是因为,没有人notify thread这个对象
是的。
老师您好!thread 线程状态 TERMINATED 之后还能调用 wait 方法吗?因为 main 线程睡了1秒所以在进入同步代码块前,此时thread已经结束啦。
登录后可查看更多问答,登录/注册
完整的并发知识网络+丰富的工作内容分享+50余道并发高频面试题
1.9k 26
942 12
1.1k 12
2.5k 12
1.1k 11