繁体   English   中英

Thread.join()和同步?

[英]Thread.join() and synchronization?

在执行线程beeing时,Thread.join()是否与刷新缓存等完全同步?

您是在问从线程T1调用T2上的join,T1中的代码在join()之后读取数据是否一定会看到T2编写的更改。 如果是这样,那么由于JLS 17.4.4 ,答案是肯定的:

线程T1中的最终操作与另一个线程T2中检测到T1已终止的任何操作同步。

T2可以通过调用T1.isAlive()或T1.join()来实现。

JLS 17.4.5

线程中的所有操作都会发生-在任何其他线程成功从该线程上的join()返回之前

方法thread.join 允许

一个线程等待另一个线程的完成。 如果t是当前正在执行线程的Thread对象,

 t.join(); 

导致当前线程暂停执行,直到t的线程终止。

这与同步无关,而仅与步骤顺序有关。

如果只有两个线程,并且您等待读取器线程使用方法join等待写入器线程的结尾,则可以将其用作同步机制,但并非如此。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM