Mon*_*eur 1 java multithreading volatile thread-safety
class MyClass {
private int value;
private void someFunction()
{
// value will never be assigned anywhere else while the thread is running
this.value = 10;
// start thread that reads value
}
}
Run Code Online (Sandbox Code Playgroud)
这是否需要易失性或线程保证看到最新值?
这是否需要易失性或线程保证看到最新值?
不,volatile不是必需的.该Java语言定义表明创建的线程将在start()调用之前看到创建线程所做的所有更新.
请参阅同步顺序(JLS 17.4.4).报价:
- 启动线程的操作与其启动的线程中的第一个操作同步.
显然,如果在start()新线程更改了起始线程需要看到的值之后更新了值,则需要进行内存同步.
如果你打电话也是如此thread.join().join()返回后,调用者可以看到由连接的线程进行的任何更新.
| 归档时间: |
|
| 查看次数: |
47 次 |
| 最近记录: |