volatile关键字
作用: private volatile int a =0;
强制线程到共享内存中读取数据,而不是从线程工作中读取,从而使变量在多个线程间可见。
volatile无法保证原子性,volatile是轻量级的同步,性能比Synchronized强很多,但是只是保证了性能的可见性,并不能替代Synchronized的同步功能。
volatile和static的区别
static 保证唯一性,但不能保证一致性 多个实例共享一个静态变量
volatile 保证了一致性,但不能保证唯一性,多个实例有多个volatile变量
Atomic类的原子性
使用AtomicInteger等原子类可以保证共享变量的原子性
但是Atomic类不能保证成员方法的原子性