1、出現線程安全性問題的條件
在多線程條件下
必須有共享變量
對共享變量進行非原子性操作
2、解決線程安全性問題的途徑
synchronized
volatile
jdk提供的原子類
使用lock
3、鎖的認識
偏向鎖
輕量級鎖
重量級鎖
重入鎖
自旋鎖
共享鎖
獨佔鎖
讀寫鎖;讀的線程不存在線程安全問題,只有寫的線程纔會有,併發條件下只有讀的線程執行完,纔會執行寫的線程
寫線程與寫線程也是互斥的,只有一個線程能夠操作
公平鎖
非公平鎖
死鎖
活鎖
1、出現線程安全性問題的條件
在多線程條件下
必須有共享變量
對共享變量進行非原子性操作
2、解決線程安全性問題的途徑
synchronized
volatile
jdk提供的原子類
使用lock
3、鎖的認識
偏向鎖
輕量級鎖
重量級鎖
重入鎖
自旋鎖
共享鎖
獨佔鎖
讀寫鎖;讀的線程不存在線程安全問題,只有寫的線程纔會有,併發條件下只有讀的線程執行完,纔會執行寫的線程
寫線程與寫線程也是互斥的,只有一個線程能夠操作
公平鎖
非公平鎖
死鎖
活鎖
線程安全 自增的類 AtomicLong seq = new AtomicLong(0); seq.incrementAndGet()