Sha*_*awn 7 java multithreading thread-safety
说我有以下代码:
private Integer number;
private final Object numberLock = new Object();
public int get(){
synchronized(number or numberLock){
return Integer.valueOf(number);
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,在以下情况下,该add方法的以下版本需要具有number易失性:
public void add(int num){
synchronized(number)
number = number + num;
}
Run Code Online (Sandbox Code Playgroud)
public void add(int num){
synchronized(numberLock)
number = number + num;
}
Run Code Online (Sandbox Code Playgroud)
我知道这些都是原子操作,但我的问题是,number guarennteed的值是否被推送到全局内存并且在不使用volatile的情况下对所有线程可见?
Eug*_*ene 10
是否值为guarennteed被推送到全局内存并且在不使用volatile的情况下对所有线程可见?
是.同步也提供可视性.实际上,同步提供了可见性和原子性,而易失性仅提供可见性.
| 归档时间: |
|
| 查看次数: |
116 次 |
| 最近记录: |