1、volatile

  • 保证线程可见性

    volatile保证一个线程的改变,另一个线程可以实时获取到改变后的值。

    多个线程运行在不同的cpu上,某个线程改变值需要通过cpu的缓存一致性协议保证所有线程的数据是最新的。

  • 禁止指令重排序

2、synchronized

3、CAS

  • 可称为乐观锁或者无锁

4、自增加锁

  • synchronized Long

  • AtomicLong

  • LongAdder:

5、reentrantLock和synchronized

  • cas 和sync
  • trylock
  • lockinterupptibly
  • 公平和非公平切换