日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java 代码锁_Java中的Lock锁

發布時間:2025/3/15 java 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 代码锁_Java中的Lock锁 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Lock鎖介紹:

在java中可以使用 synchronized 來實現多線程下對象的同步訪問,為了獲得更加靈活使用場景、高效的性能,java還提供了Lock接口及其實現類ReentrantLock和讀寫鎖 ReentrantReadWriteLock。

相比synchronized來實現同步,使用Lock實現同步主要有以下差異性:

1、使用synchronized關鍵字時,鎖的控制和釋放是在synchronized同步代碼塊的開始和結束位置。而在使用Lock實現同步時,鎖的獲取和釋放可以在不同的代碼塊、不同的方法中。這一點是基于使用者手動獲取和釋放鎖的特性。

2、Lock接口提供了試圖獲取鎖的tryLock()方法,在調用tryLock()獲取鎖失敗時返回false,這樣線程可以執行其它的操作 而不至于使線程進入休眠。tryLock()方法可傳入一個long型的時間參數,允許在一定的時間內來獲取鎖。

3、Lock接口的實現類ReentrantReadWriteLock提供了讀鎖和寫鎖,允許多個線程獲得讀鎖、而只能有一個線程獲得寫鎖。讀鎖和寫鎖不能同時獲得。實現了讀和寫的分離,這一點在需要并發讀的應用中非常重要,如lucene允許多個線程讀取索引數據進行查詢但只能有一個線程負責索引數據的構建。

4、基于以上3點,lock來實現同步具備更好的性能。

Lock鎖與條件同步:

與synchronized類似,Lock鎖也可以實現條件同步。在java的concurrent包中提供了 Condition 接口及其實現類ConditionObject。

當滿足一定條件時,調用Condition的await()方法使當前線程進入休眠狀態進行等待。調用Condition的signalAll()方法喚醒因await()進入休眠的線程。

在synchronized與條件同步博文中,我們使用synchronized實現了一個生產者-消費者模型,在這里,來試試使用Lock鎖及其同步條件來實現同樣的一個生產者-消費者模型:

public class MessageStorageByLock {

private int maxSize;

private List messages;

private final ReentrantLock lock;

private final Condition conditionWrite;//聲明兩個鎖條件

private final Condition conditionRead;

public MessageStorageByLock(int maxSize) {

this.maxSize = maxSize;

messages = new LinkedList();

lock = new ReentrantLock(true);//true修改鎖的公平性,為true時,使用lifo隊列來順序獲得鎖

conditionWrite = lock.newCondition();//調用newCondition()方法,即new ConditionObject();

conditionRead = lock.newCondition();

}

public void set(String message){

//使用鎖實現同步,獲取所得操作,當鎖被其他線程占用時,當前線程將進入休眠

lock.lock();

try{

while(messages.size() == maxSize){

System.out.print("the message buffer is full now,start into wait()\n");

conditionWrite.await();//滿足條件時,線程休眠并釋放鎖。當調用 signalAll()時。線程喚醒并重新獲得鎖

}

Thread.sleep(100);

messages.add(message);

System.out.print("add message:"+message+" success\n");

conditionRead.signalAll();//喚醒因conditionRead.await()休眠的線程

}catch (InterruptedException e){

e.printStackTrace();

}finally {

lock.unlock();

}

}

public String get(){

String message = null;

lock.lock();

try{

while(messages.size() == 0){

conditionRead.await();

System.out.print("the message buffer is empty now,start into wait()\n");

}

Thread.sleep(100);

message = ((LinkedList)messages).poll();

System.out.print("get message:"+message+" success\n");

conditionWrite.signalAll();

}catch (InterruptedException e){

e.printStackTrace();

}finally {

lock.unlock();

}

return message;

}

}總結:

不管是synchronized關鍵字還是Lock鎖,都是用來在多線程的環境下對資源的同步訪問進行控制,用以避免因多個線程對數據的并發讀寫造成的數據混亂問題。與synchronized不同的是,Lock鎖實現同步時需要使用者手動控制鎖的獲取和釋放,其靈活性使得可以實現更復雜的多線程同步和更高的性能,但同時,使用者一定要在獲取鎖后及時捕獲代碼運行過程中的異常并在finally代碼塊中釋放鎖。

總結

以上是生活随笔為你收集整理的java 代码锁_Java中的Lock锁的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久国内视频 | 蜜桃麻豆视频 | 成了校长的性脔h文 | 猎艳山村丰满少妇 | 国产黄色免费视频 | 亚洲乱亚洲 | 日韩一级二级三级 | 国产一区二区三区影视 | 国产一区二区小说 | 久久久久久久人妻无码中文字幕爆 | 用力挺进新婚白嫩少妇 | 日本中文不卡 | 精品人妻一区二区三区潮喷在线 | 超碰av男人的天堂 | 午夜视频网址 | 日本护士做爰视频 | 免费观看美女裸体网站 | 17c国产精品一区二区 | 夜夜爽夜夜叫夜夜高潮漏水 | 亚洲国产成人精品久久久 | 亚洲深夜福利视频 | 天天干,夜夜爽 | 播播激情网| 屁股夹体温计调教play | www日本xxx | 天天射日日射 | 岛国av在线播放 | 邻居少妇张开双腿让我爽一夜 | 成人午夜精品福利免费 | 人妻熟女一区 | 欧美性生交xxxxx久久久缅北 | jizzjizz在线 | 欧美 国产 综合 | 精品无码久久久久久久久久 | 国产精品日韩在线观看 | 葵司免费一区二区三区四区五区 | 黄网站免费在线观看 | 精品少妇一区二区三区在线观看 | 国产精品主播一区二区 | 91丨九色丨蝌蚪丨老版 | 欧美福利网站 | 中文字幕亚洲欧美日韩在线不卡 | 日韩一级片视频 | 无套内谢大学处破女www小说 | 天天视频国产 | 欧美四级在线观看 | 国模视频在线 | 欧美大肚乱孕交hd孕妇 | 人成在线免费视频 | www毛片com | 色xxxx| 日韩 欧美 精品 | 一道本一区| 美女又爽又黄免费 | 国产亚洲区| 午夜福利电影 | 六月丁香色婷婷 | 欧美综合在线视频 | 国产精品久久影视 | 不卡视频一区 | 清纯唯美亚洲 | 双性懵懂美人被强制调教 | 一区二区xxx| 精品一区二区在线观看 | 久热久操| 九九午夜视频 | 激情图片网站 | 秋霞欧洲| 夜夜撸小说 | 国产大片b站 | 2021国产精品视频 | 日本理论片中文字幕 | 干美女av| 一级片少妇 | 五月婷婷六月综合 | 国产亚洲精品久久久久婷婷瑜伽 | 好av在线| 亚洲三级大片 | 人人看人人模 | 欧美极品一区二区三区 | 人妻与黑人一区二区三区 | 国产视频第一页 | 国产精品久久久久三级无码 | 黄色国产精品 | 国产传媒视频在线观看 | 日韩免费观看一区二区 | 超碰97人人在线 | 黄色一级在线播放 | 91精品国产一区二区三竹菊影视 | 91超碰国产在线 | 中文有码一区 | 亚洲第一免费播放区 | 手机看片亚洲 | 日韩激情视频在线 | 中文字幕激情视频 | 香蕉av网站| 国产精品一级片在线观看 | 精品国产乱码久久久久久闺蜜 | 久久久综合精品 |