高併發編程-08-Lock

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

相關文章
相關標籤/搜索