1、出现线程安全性问题的条件
在多线程条件下
必须有共享变量
对共享变量进行非原子性操作
2、解决线程安全性问题的途径
synchronized
volatile
jdk提供的原子类
使用lock
3、锁的认识
偏向锁
轻量级锁
重量级锁
重入锁
自旋锁
共享锁
独占锁
读写锁;读的线程不存在线程安全问题,只有写的线程才会有,并发条件下只有读的线程执行完,才会执行写的线程
写线程与写线程也是互斥的,只有一个线程能够操作
公平锁
非公平锁
死锁
活锁
1、出现线程安全性问题的条件
在多线程条件下
必须有共享变量
对共享变量进行非原子性操作
2、解决线程安全性问题的途径
synchronized
volatile
jdk提供的原子类
使用lock
3、锁的认识
偏向锁
轻量级锁
重量级锁
重入锁
自旋锁
共享锁
独占锁
读写锁;读的线程不存在线程安全问题,只有写的线程才会有,并发条件下只有读的线程执行完,才会执行写的线程
写线程与写线程也是互斥的,只有一个线程能够操作
公平锁
非公平锁
死锁
活锁