关于join原理。
来源:7-14 join注意点

CoffeePlayer
2020-05-22
老师,您好!
join底层调用了子线程对象的wait方法,等待子线程执行完毕后,就会调用子线程对象的notify,这样主线程就会继续执行。
我在想,如果子线程执行的很快,还没有等到主线程执行join方法,就执行完毕后,会不会造成永久等待?
我用如下代码演示,发现并没有出现永久等待的现象。但是根据原理,会发现如下的代码就会出现永久等待
我想问老师,是否更低层做了一些优化,期待老师的回复!
写回答
1回答
-
小伙伴的思考很棒!点赞。
join不会永久等待,是因为在join让主线程等待前,会先判断子线程是否已经运行完毕了,如果发现已经运行完毕,就不再去让主线程wait了
142022-05-11
相似问题