[英]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.