一、出现线程安全性问题的条件
(1)在多线程的环境下
(2)必须有共享资源
(3)对共享资源进行非原子性操作
二、解决线程安全性问题的途径
(1)synchronized (偏向锁,轻量级锁,重量级锁)
(2)volatile
(2)JDK提供的原子类
(3)使用Lock(共享锁,排它锁)
(4)认识的“*锁”
三、常用的锁
偏向锁
轻量级锁
重量级锁
重入锁
自旋锁
共享锁
独占锁
排他锁
读写锁
公平锁
非公平锁
死锁
活锁