亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

ReentrantLock同步

2019-11-09 14:53:59
字體:
來源:轉載
供稿:網友

ReentrantLock加鎖和釋放鎖的一般形式如下

Lock lock = new ReentrantLock();//默認使用非公平鎖,如果要使用公平鎖,需要傳入參數true ........ lock.lock(); try { //更新對象的狀態 //捕獲異常,必要時恢復到原來的不變約束 //如果有return語句,放在這里 finally { lock.unlock(); //鎖必須在finally塊中釋放 }

實現可中斷等待

ReentrantLock可以實現等待中斷,當某現在等待時間過長,可以接受中斷退出等待,如下所示:

package jalonTest;import java.util.concurrent.locks.ReentrantLock; /* write線程一直占有鎖不退出,read線程在等待時收到中斷可以退出等待*/public class BufferInterruptibly { PRivate ReentrantLock lock = new ReentrantLock(); public void write() { lock.lock(); try { long startTime = System.currentTimeMillis(); System.out.println("開始往這個buff寫入數據…"); for (;;)// 模擬要處理很長時間 { if (System.currentTimeMillis() - startTime > Integer.MAX_VALUE) { break; } } System.out.println("終于寫完了"); } finally { lock.unlock(); } } public void read() throws InterruptedException { lock.lockInterruptibly();// 注意這里,可以響應中斷 try { System.out.println("從這個buff讀數據"); } finally { lock.unlock(); } } public static void main(String args[]) { BufferInterruptibly buff = new BufferInterruptibly(); final Writer2 writer = new Writer2(buff); final Reader2 reader = new Reader2(buff); writer.start(); reader.start(); new Thread(new Runnable() { public void run() { long start = System.currentTimeMillis(); for (;;) { if (System.currentTimeMillis() - start > 5000) { System.out.println("不等了,嘗試中斷"); reader.interrupt(); //此處中斷讀操作 break; } } } }).start(); } } class Reader2 extends Thread { private BufferInterruptibly buff; public Reader2(BufferInterruptibly buff) { this.buff = buff; } @Override public void run() { try { buff.read();//可以收到中斷的異常,從而有效退出 } catch (InterruptedException e) { System.out.println("我不讀了"); } System.out.println("讀結束"); } } class Writer2 extends Thread { private BufferInterruptibly buff; public Writer2(BufferInterruptibly buff) { this.buff = buff; } @Override public void run() { buff.write(); } }

前面提到的synchronized同步則不能實現中斷退出!

實現條件變量

package jalonTest;import java.util.concurrent.locks.*; /* Producer向緩存中寫入類容,內容寫入完畢后喚醒等待的Consumer線程*/class Info{ // 定義信息類 private String name = "name";//定義name屬性,為了與下面set的name屬性區別開 private String content = "content" ;// 定義content屬性,為了與下面set的content屬性區別開 private boolean flag = true ; // 設置標志位,初始時先生產 private Lock lock = new ReentrantLock(); private Condition condition = lock.newCondition(); //產生一個Condition對象 public void set(String name,String content){ lock.lock(); try{ while(!flag){ condition.await() ; } this.setName(name) ; // 設置名稱 Thread.sleep(300) ; this.setContent(content) ; // 設置內容 flag = false ; // 改變標志位,表示可以取走 condition.signal(); }catch(InterruptedException e){ e.printStackTrace() ; }finally{ lock.unlock(); } } public void get(){ lock.lock(); try{ while(flag){ condition.await() ; } Thread.sleep(300) ; System.out.println(this.getName() + " --> " + this.getContent()) ; flag = true ; // 改變標志位,表示可以生產 condition.signal(); }catch(InterruptedException e){ e.printStackTrace() ; }finally{ lock.unlock(); } } private void setName(String name){ this.name = name ; } private void setContent(String content){ this.content = content ; } private String getName(){ return this.name ; } private String getContent(){ return this.content ; } } class Producer implements Runnable{ // 通過Runnable實現多線程 private Info info = null ; // 保存Info引用 public Producer(Info info){ this.info = info ; } public void run(){ boolean flag = true ; // 定義標記位 for(int i=0;i<10;i++){ if(flag){ this.info.set("姓名--1","內容--1") ; // 設置名稱 flag = false ; }else{ this.info.set("姓名--2","內容--2") ; // 設置名稱 flag = true ; } } } } class Consumer implements Runnable{ private Info info = null ; public Consumer(Info info){ this.info = info ; } public void run(){ for(int i=0;i<10;i++){ this.info.get() ; } } } public class ThreadCaseDemo{ public static void main(String args[]){ Info info = new Info(); // 實例化Info對象 Producer pro = new Producer(info) ; // 生產者 Consumer con = new Consumer(info) ; // 消費者 new Thread(pro).start() ; //啟動了生產者線程后,再啟動消費者線程 try{ Thread.sleep(500) ; }catch(InterruptedException e){ e.printStackTrace() ; } new Thread(con).start() ; } }

在synchronized同步文章中利用synchronized實現了類似的功能。synchronized和ReentrantLock最大的差別還是在于高并發性。ReentrantLock對高并發性效率較高!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩欧美亚洲国产一区| 欧美午夜精品久久久久久久| 国产精品永久免费观看| 亚洲高清免费观看高清完整版| 亚洲二区在线播放视频| 国产精品海角社区在线观看| 亚洲成人av片在线观看| 久久久精品久久久| 日韩免费在线播放| 久久精品99久久久香蕉| 日韩在线视频免费观看| 91久久国产婷婷一区二区| 国产精品高潮呻吟久久av无限| 97人洗澡人人免费公开视频碰碰碰| 亚洲激情久久久| 91视频免费在线| 中文字幕亚洲综合久久| 91视频国产一区| 热99精品只有里视频精品| www.亚洲免费视频| 亚洲自拍偷拍在线| 国产精品爽黄69| 成人激情视频在线播放| 亚洲精品一区二区在线| 亚洲二区在线播放视频| 日韩av电影院| 欧美在线免费视频| 精品欧美一区二区三区| 久久久精品国产一区二区| 欧美日韩国产区| 久久青草精品视频免费观看| 国产日韩精品视频| 久久成人av网站| 88xx成人精品| 亚洲美女www午夜| 91精品啪aⅴ在线观看国产| 最近日韩中文字幕中文| 日韩黄在线观看| 国产精品国产三级国产aⅴ9色| 456国产精品| 国产一区二区在线免费视频| 日韩激情在线视频| 精品久久久久久久久久久久| 九色精品免费永久在线| 久久精品一本久久99精品| 精品人伦一区二区三区蜜桃免费| 精品久久久久久久久久| 欧美乱大交xxxxx另类电影| 亚洲精品有码在线| 91精品国产综合久久香蕉的用户体验| 丰满岳妇乱一区二区三区| 国产精品国产亚洲伊人久久| 久久久久久久久国产精品| 欧美午夜久久久| 欧美极品xxxx| 国产精品精品视频一区二区三区| 欧美日韩在线免费观看| 尤物九九久久国产精品的特点| 欧美激情日韩图片| 亚洲国产欧美日韩精品| 久久九九精品99国产精品| 欧美日韩性视频| 亚洲成人网在线观看| 欧美精品久久久久久久久久| 91国产精品视频在线| 久色乳综合思思在线视频| 欧美激情精品久久久久久大尺度| 日韩精品在线免费播放| 日韩欧美成人免费视频| 色综合色综合网色综合| 亚洲一区国产精品| www日韩中文字幕在线看| 欧美黑人又粗大| 国产日韩精品一区二区| 成人免费观看a| 亚洲人成五月天| 亚洲在线免费看| 精品久久久香蕉免费精品视频| 日韩va亚洲va欧洲va国产| 一区二区三区精品99久久| 亚洲国产天堂久久综合网| 久久成人18免费网站| 日本精品久久久久久久| 在线观看日韩www视频免费| 国产成人精品国内自产拍免费看| 欧美一级在线亚洲天堂| 亚洲美女性生活视频| 韩国日本不卡在线| 日本不卡视频在线播放| 欧美成人午夜激情在线| 国产精品视频色| 欧美高清在线播放| 成人情趣片在线观看免费| 亚洲免费成人av电影| 国产精品久久久久久久久久ktv| 日韩av片免费在线观看| 国产一区深夜福利| 国产精品久久久久久久久久| 亚洲精品自在久久| 尤物九九久久国产精品的特点| 91午夜理伦私人影院| 成人观看高清在线观看免费| 久久久免费在线观看| 久久久久久成人精品| 国产精品久久9| 日韩欧美国产视频| 国产日韩欧美中文在线播放| 亚洲free嫩bbb| 国产精品一区二区av影院萌芽| 国内精品久久影院| 亚洲人成人99网站| 国内成人精品一区| 欧美性生交xxxxxdddd| 日韩精品视频观看| 欧美精品videosex极品1| 久久久91精品| 秋霞成人午夜鲁丝一区二区三区| 亚洲乱码国产乱码精品精| 中文字幕亚洲综合| 亚洲国产成人久久综合一区| 亚洲国产成人av在线| 欧美又大又硬又粗bbbbb| 91中文在线观看| 青青草一区二区| xxxxx91麻豆| 久久久中文字幕| 国产精品av电影| 国产欧美欧洲在线观看| 久久久国产精品一区| 日韩av中文在线| 欧洲日韩成人av| 欧美wwwxxxx| 久久在线精品视频| 久久国产精品久久久久| 日韩av手机在线看| 成人春色激情网| 精品无人国产偷自产在线| 欧美一级成年大片在线观看| 久久久中精品2020中文| 视频在线观看99| 视频直播国产精品| 原创国产精品91| 亚洲精品福利资源站| 国产美女主播一区| 国产精品久久久久久亚洲调教| 日韩电影免费观看中文字幕| 欧美亚洲视频在线观看| 久久久久久国产精品三级玉女聊斋| 91九色视频导航| 欧洲精品久久久| 久久激情视频免费观看| 色综合久久悠悠| 成人福利在线视频| 狠狠躁夜夜躁人人爽天天天天97| 亚洲女人天堂视频| 亚洲自拍偷拍网址| 狠狠做深爱婷婷久久综合一区| 久久亚洲精品中文字幕冲田杏梨| 色www亚洲国产张柏芝| 欧洲成人午夜免费大片| 超碰精品一区二区三区乱码| 久久久噜噜噜久久久| 亚洲成人久久久久| 一区二区在线视频|