当执行线程连接时,Thread.join()是否与刷新缓存等完全同步?
答案 0 :(得分:2)
我认为你是否从线程T1调用T2上的连接,join()
之后的T1读取数据中的代码肯定会看到T2写入的更改。如果是这种情况,那么答案是肯定的,因为JLS 17.4.4:
线程T1中的最终操作与另一个检测到T1已终止的线程T2中的任何操作同步。
T2可以通过调用T1.isAlive()或T1.join()完成此操作。
线程中的所有操作都发生在任何其他线程成功从该线程上的
join()
返回之前。
答案 1 :(得分:0)
方法thread.join allows:
一个线程等待另一个线程的完成。如果t是其当前正在执行其线程的Thread对象,则
t.join();
导致当前线程暂停执行,直到t的线程终止。
这与同步无关,只与步骤序列有关。
如果你有只有两个线程并且你等待读者线程等待写入线程的结束与方法连接,这可以用作同步机制,但它不是。