1,回顧app
到目前,咱們講了3個跟多個線程操做一個資源的技術點,主要涉及如下幾個點:ide
synchronized:原子性,重量級鎖spa
volatile:可見性,不保證原子性線程
採用JDK提供的原子類orm
2,Lock接口
在JDK1.5後,爲咱們提供了Lock接口資源
主要有三個特色it
1,明確加鎖和解鎖class
lock(),unlock()import
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?以及實現可重入?