小编vri*_*ucz的帖子

Thread.join()是否释放锁定?还是继续坚持下去?

据我了解,内部obj.join()调用wait().这意味着join()始终释放锁(因为wait()在调用后总是释放锁).

API文档解释说:

此实现使用一系列this.wait调用条件 this.isAlive.当一个线程终止时,该this.notifyAll方法被调用.建议应用程序无法使用wait,notifynotifyAllThread实例.

人们在这里SO说,join()不会释放任何锁定,因为API没有提到它明确.但这种逻辑对我来说似乎很奇怪.

这是join()代码中的主要逻辑:

 while (isAlive()) {
            wait(0);
        }
Run Code Online (Sandbox Code Playgroud)

这个网站进一步增加了混乱(我认为他们错了):

3)wait()join()方法之间的第三个区别是,当一个线程调用该wait()方法时,它释放为wait()被调用的对象保留的任何锁,但是调用该join()方法不会释放任何监视器或锁.

java multithreading

10
推荐指数
1
解决办法
561
查看次数

标签 统计

java ×1

multithreading ×1