出现线程安全性问题的条件 :
在多线程的环境下
必须有共享资源
对共享资源进行非原子性操作
解决线程安全性问题的途径
synchronized (偏向锁,轻量级锁,重量级锁)
单例模式中的双重检测
volatile 不能保证非原子操作
JDK提供的原子类 使用Lock(共享锁,排它锁)
认识“*锁”
偏向锁
轻量级锁
重量级锁
重入锁
自旋锁
共享锁
独占锁
排他锁
读写锁
公平锁
非公平锁
死锁
活锁