1. 程式人生 > >高並發編程-08-Lock

高並發編程-08-Lock

為我 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