1、volatile
保证线程可见性
volatile保证一个线程的改变,另一个线程可以实时获取到改变后的值。
多个线程运行在不同的cpu上,某个线程改变值需要通过cpu的缓存一致性协议保证所有线程的数据是最新的。
禁止指令重排序
2、synchronized
3、CAS
- 可称为乐观锁或者无锁
4、自增加锁
synchronized Long
AtomicLong
LongAdder:
5、reentrantLock和synchronized
- cas 和sync
- trylock
- lockinterupptibly
- 公平和非公平切换