看java并发编程实战的一个关于线程安全的问题
线程不安全的
public class MuTableInteger(){
private int value;
public int get(){return value;}
public void set(int value){this.value = value}
}
线程安全的
public class SynchronizedInteger(){
private int value;
public synchronized int get(){return value;}
public synchronized void set(int value){this.value = value}
}
为什么上面那段是不安全的,按照我对本书前两章的理解,synchronized关键字无非就是保证这段代码是原子操作。
get和set方法好像本身应该就是原子操作了吧,这样加synchronized关键字有什么意义吗?为什么不加就是线程不安全的,加了就是线程安全的?