激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java可重入鎖的實現原理與應用場景

Java可重入鎖的實現原理與應用場景

2021-06-30 14:59李燦輝 Java教程

今天小編就為大家分享一篇關于Java可重入鎖的實現原理與應用場景,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

可重入鎖,從字面來理解,就是可以重復進入的鎖。

可重入鎖,也叫做遞歸鎖,指的是同一線程外層函數獲得鎖之后,內層遞歸函數仍然有獲取該鎖的代碼,但不受影響。

在java環境下reentrantlocksynchronized都是可重入鎖。

synchronized是一個可重入鎖。在一個類中,如果synchronized方法1調用了synchronized方法2,方法2是可以正常執行的,這說明synchronized是可重入鎖。否則,在執行方法2想獲取鎖的時候,該鎖已經在執行方法1時獲取了,那么方法2將永遠得不到執行。

可重入鎖在什么場景使用呢?

可重入鎖主要用在線程需要多次進入臨界區代碼時,需要使用可重入鎖。具體的例子,比如上文中提到的一個synchronized方法需要調用另一個synchronized方法時。

可重入鎖的實現原理是怎么樣的?

加鎖時,需要判斷鎖是否已經被獲取。如果已經被獲取,則判斷獲取鎖的線程是否是當前線程。如果是當前線程,則給獲取次數加1。如果不是當前線程,則需要等待。

釋放鎖時,需要給鎖的獲取次數減1,然后判斷,次數是否為0了。如果次數為0了,則需要調用鎖的喚醒方法,讓鎖上阻塞的其他線程得到執行的機會。

下面是一個用synchronized實現的例子:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class reentranttest implements runnable {
  public synchronized void get() {
    system.out.println(thread.currentthread().getname());
    set();
  }
  public synchronized void set() {
    system.out.println(thread.currentthread().getname());
  }
  public void run() {
    get();
  }
  public static void main(string[] args) {
    reentranttest rt = new reentranttest();
    for(;;){
      new thread(rt).start();
    }
  }
}

整個過程沒有發生死鎖的情況,截取一部分輸出結果如下:

thread-8492
thread-8492
thread-8494
thread-8494
thread-8495
thread-8495
thread-8493
thread-8493

set()get()同時輸出了線程名稱,表明即使遞歸使用synchronized也沒有發生死鎖,證明其是可重入的。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對服務器之家的支持。如果你想了解更多相關內容請查看下面相關鏈接

原文鏈接:https://blog.csdn.net/li_canhui/article/details/84556412

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产精品久久77777 | 99热草 | 久久逼网 | 欧美伦交 | 成人区精品一区二区婷婷 | 欧洲成人一区 | 曰批全过程120分钟免费69 | 国产成人午夜高潮毛片 | 日韩午夜片 | 中文字幕免费一区 | 天天干天天透 | 黄色免费在线视频网站 | chinese-xvideos | 免费一级欧美在线观看视频 | 91网站链接| 91精品国产综合久久男男 | 一本色道久久综合狠狠躁篇适合什么人看 | 国产午夜三级一区二区三桃花影视 | 成人不卡在线观看 | 久久国产成人午夜av浪潮 | 91成人在线免费视频 | 精品一区二区免费视频视频 | 日本一区二区三区视频在线 | 97se亚洲综合在线韩国专区福利 | 成人福利视频 | 一级做a爱片久久 | 日本欧美一区二区三区在线播 | 欧美人xxx| 久久精品亚洲欧美日韩精品中文字幕 | 国产精品视频在 | 午夜精品网站 | 欧美在线观看视频一区 | 国产欧美日韩在线不卡第一页 | 精品久久久久久久久久久aⅴ | 国产精品午夜未成人免费观看 | 一本色道久久99精品综合蜜臀 | 国产乱淫av| www.54271.com| 91精品国产综合久久久动漫日韩 | 免费在线观看亚洲 | 免费专区 - 91爱爱 |