<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      java~ReentrantLock的介紹

      ReentrantLock

      java除了使用關(guān)鍵字synchronized外,還可以使用ReentrantLock實(shí)現(xiàn)獨(dú)占鎖的功能。而且ReentrantLock相比synchronized而言功能更加豐富,使用起來(lái)更為靈活,也更適合復(fù)雜的并發(fā)場(chǎng)景。這篇文章主要是從使用的角度來(lái)分析一下ReentrantLock。

      ReentrantLock與synchronized來(lái)的區(qū)別

      1. synchronized是獨(dú)占鎖,加鎖和解鎖的過(guò)程自動(dòng)進(jìn)行,易于操作,但不夠靈活。ReentrantLock也是獨(dú)占鎖,加鎖和解鎖的過(guò)程需要手動(dòng)進(jìn)行,不易操作,但非常靈活。
      2. synchronized可重入,因?yàn)榧渔i和解鎖自動(dòng)進(jìn)行,不必?fù)?dān)心最后是否釋放鎖;ReentrantLock也可重入,但加鎖和解鎖需要手動(dòng)進(jìn)行,且次數(shù)需一樣,否則其他線程無(wú)法獲得鎖。
      3. synchronized不可響應(yīng)中斷,一個(gè)線程獲取不到鎖就一直等著;ReentrantLock可以相應(yīng)中斷。

      isFair()、isHeldByCurrentThread()和isLocked()

      1. lock.isFair()方法用來(lái)判斷l(xiāng)ock鎖是公平鎖還是非公平鎖。公平鎖是指,線程獲得鎖的順序是按其等待鎖的先后順序來(lái)的,先來(lái)先獲得FIFO。反之,非公平鎖則是線程隨機(jī)獲得鎖的,lock默認(rèn)是非公平鎖。
      2. lock.isHeldByCurrentThread()的作用是查詢當(dāng)前線程是否保持此鎖定,和lock.hasQueueThread()不同的地方是:lock.hasQueueThread(Thread thread)的作用是判斷當(dāng)前線程是否處于等待lock的狀態(tài)。
      3. lock.isLocked()的作用是查詢此鎖定是否由任意線程保持。

      spring redis lock里有對(duì)ReentrantLock的使用,org.springframework.integration.redis.util.RedisLockRegistry,有興趣可以看一下它的源碼。

      用法示例

      一 isFair()方法用來(lái)判斷l(xiāng)ock鎖是公平鎖還是非公平鎖

      public class ServiceIsFair {
          public ReentrantLock lock;
       
          public ServiceIsFair(Boolean isFair) {
              this.lock = new ReentrantLock(isFair);
          }
       
          public void serviceMethod(){
              try {
                  lock.lock();
                  System.out.println("公平鎖情況:"+lock.isFair());
              } finally {
                  lock.unlock();
              }
          }
      }
      

      二 lock.isHeldByCurrentThread()的作用是查詢當(dāng)前線程是否保持此鎖定,與lock.hasQueueThread()不同的地方是:lock.hasQueueThread(Thread thread)的作用是判斷當(dāng)前線程是否處于等待lock的狀態(tài)

      public class ServiceIsHeldByCurrentThread {
          private ReentrantLock lock;
       
          public ServiceIsHeldByCurrentThread(Boolean isFair) {
              this.lock = new ReentrantLock(isFair);
          }
       
          public void serviceMethod(){
              try {
                  System.out.println("lock.isHeldByCurrentThread() "+lock.isHeldByCurrentThread());
                  lock.lock();
                  System.out.println("lock.isHeldByCurrentThread() "+lock.isHeldByCurrentThread());
              } finally {
                  lock.unlock();
              }
          }
      }
      

      三 lock.isLocked()的作用是查詢此鎖定是否由任意線程保持

      public class ServiceIsLocked {
          private ReentrantLock lock;
       
          public ServiceIsLocked(Boolean isFair) {
              this.lock = new ReentrantLock(isFair);
          }
       
          public void serviceMethod(){
              try {
                  System.out.println("lock.isLocked() "+lock.isLocked());
                  lock.lock();
                  System.out.println("lock.isLocked() "+lock.isLocked());
              } finally {
                  lock.unlock();
              }
          }
      }
      
      posted @ 2020-08-21 10:00  張占嶺  閱讀(647)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 丰满少妇被猛烈进出69影院| 天堂国产一区二区三区| 国产午夜福利精品视频| 久久老熟女一区二区蜜臀| 婷婷久久香蕉五月综合加勒比| 天天做天天爱夜夜爽女人爽| 精品国产大片中文字幕| 99网友自拍视频在线| 亚洲精品日韩久久精品| 夜色福利站WWW国产在线视频| 午夜福利精品国产二区| 久久夜色精品国产网站| 久爱www人成免费网站| 国产精品办公室沙发| 国产无码高清视频不卡| av天堂久久精品影音先锋| 亚洲欧美高清在线精品一区二区| 欧美人禽杂交狂配| 老师破女学生处特级毛ooo片| 国产一级特黄性生活大片| 午夜毛片不卡免费观看视频| 在线中文字幕国产一区| 色综合久久综合欧美综合网| 成人aⅴ综合视频国产| 蜜臀av一区二区三区不卡| 波多野结衣一区二区免费视频| 三明市| 国产一区国产二区在线视频| 国内外成人综合免费视频| 中文字幕成人精品久久不卡| 精品综合久久久久久98| 国内精品自产拍在线播放| 亚洲综合久久精品哦夜夜嗨| 亚洲69视频| 东京一本一道一二三区| 国精品无码一区二区三区在线看| 国产线播放免费人成视频播放 | 成人毛片一区二区| 韩国无码av片在线观看| 在线看片免费人成视频久网| 精品国产高清中文字幕|