高併發編程-08-Lock

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?以及實現可重入?


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章