可重入鎖
阿新 • • 發佈:2017-06-10
pan ron 環境 href nts ble tid body implement
Threadid: 8
Threadid: 10
Threadid: 10
Threadid: 9
Threadid: 9 可重入鎖最大的作用是避免死鎖。 引一篇例子,比較詳細 http://www.cnblogs.com/dj3839/p/6580765.html
可重入鎖,也叫做遞歸鎖,指的是同一線程 外層函數獲得鎖之後 ,內層遞歸函數仍然有獲取該鎖的代碼,但不受影響。
在JAVA環境下 ReentrantLock 和synchronized 都是 可重入鎖。
下面是使用實例:
public class Test implements Runnable{ public synchronized void get(){ System.out.println(Thread.currentThread().getId()); set(); } public synchronized void set(){ System.out.println(Thread.currentThread().getId()); } @Overridepublic void run() { get(); } public static void main(String[] args) { Test ss=new Test(); new Thread(ss).start(); new Thread(ss).start(); new Thread(ss).start(); } }
兩個例子最後的結果都是正確的,即 同一個線程id被連續輸出兩次。
結果如下:
Threadid: 8Threadid: 8
Threadid: 10
Threadid: 10
Threadid: 9
Threadid: 9 可重入鎖最大的作用是避免死鎖。 引一篇例子,比較詳細 http://www.cnblogs.com/dj3839/p/6580765.html
可重入鎖