首先多线程使用的变量是从主线程拷贝过去的
volatile保证可见性,当变量的值发生改变的时候,其他线程可以看到最新的变量值,但是不保证原子性,也就是说在写变量值的时候会出现丢失问题,导致错误。
CAS使用unsafe类,直接操纵内存
缺点,cpu开销大
示例:
原子类示例
乐观锁的使用,定义版本号
首先多线程使用的变量是从主线程拷贝过去的
volatile保证可见性,当变量的值发生改变的时候,其他线程可以看到最新的变量值,但是不保证原子性,也就是说在写变量值的时候会出现丢失问题,导致错误。
CAS使用unsafe类,直接操纵内存
缺点,cpu开销大
示例:
原子类示例
乐观锁的使用,定义版本号