高並發編程-08-Lock
阿新 • • 發佈:2018-01-13
為我 normal sys 編程 word 原子類 mar 原子性 子類 1,回顧
到目前,我們講了3個跟多個線程操作一個資源的技術點,主要涉及以下幾個點:
synchronized:原子性,重量級鎖
volatile:可見性,不保證原子性
采用JDK提供的原子類
2,Lock
在JDK1.5後,為我們提供了Lock接口
主要有三個特點
1,明確加鎖和解鎖
lock(),unlock()
public class LockTest {
private Lock lock = new ReentrantLock();
public void lockTest(){
try{
lock.lock();
System.out.println("do something...");
}finally{
lock.unlock();
}
}
}
2,可以嘗試訪問鎖
tryLock()
3,可以構建公平鎖,解決我們之前說的饑餓問題,實現公平性
采用Lock的實現類ReentrantLock可以構建公平鎖
Lock lock = new ReentrantLock(true);//true就是為公平鎖 fair
思考題:
如何實現一個自己的Lock?以及實現可重入?
高並發編程-08-Lock