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

首頁 > 編程 > Java > 正文

Java多線程編程之讀寫鎖ReadWriteLock用法實例

2019-11-26 15:11:40
字體:
來源:轉載
供稿:網友

讀寫鎖:分為讀鎖和寫鎖,多個讀鎖不互斥,讀鎖與寫鎖互斥,這是由jvm自己控制的,你只要上好相應的鎖即可。如果你的代碼只讀數據,可以很多人同時讀,但不能同時寫,那就上讀鎖;如果你的代碼修改數據,只能有一個人在寫,且不能同時讀取,那就上寫鎖??傊?,讀的時候上讀鎖,寫的時候上寫鎖!

三個線程讀數據,三個線程寫數據示例:
可以同時讀,讀的時候不能寫,不能同時寫,寫的時候不能讀。
讀的時候上讀鎖,讀完解鎖;寫的時候上寫鎖,寫完解鎖。
注意finally解鎖。

package com.ljq.test.thread; import java.util.Random;import java.util.concurrent.locks.ReadWriteLock;import java.util.concurrent.locks.ReentrantReadWriteLock; /** * 讀寫鎖 * * @author Administrator * */public class ReadWriteLockTest {  public static void main(String[] args) {    final ReadWrite rw = new ReadWrite();    for (int i = 0; i < 3; i++) {      new Thread() {        public void run() {          while (true) {            rw.read();          }        }       }.start();       new Thread() {        public void run() {          while (true) {            rw.write(new Random().nextInt(10000));          }        }       }.start();    }   }} /** * 讀和寫要互斥,因此要把它們放在同一個類中 * * @author Administrator * */class ReadWrite {  private Object data = null;//共享數據,只能有一個線程寫該數據,但可以有多個線程同時讀該數據。  ReadWriteLock rwl = new ReentrantReadWriteLock();   /**   * 讀數據   */  public void read() {         rwl.readLock().lock();    try {      System.out.println(Thread.currentThread().getName() + " be ready to read data!");      Thread.sleep((long) (Math.random() * 1000));      System.out.println(Thread.currentThread().getName() + "have read data :" + data);    } catch (InterruptedException e) {      e.printStackTrace();    } finally {      rwl.readLock().unlock();    }       }   /**   * 寫數據   *   * @param data   */  public void write(Object data) {         rwl.writeLock().lock();    try {      System.out.println(Thread.currentThread().getName() + " be ready to write data!");      Thread.sleep((long) (Math.random() * 1000));      this.data = data;      System.out.println(Thread.currentThread().getName() + " have write data: " + data);    } catch (InterruptedException e) {      e.printStackTrace();    } finally {      rwl.writeLock().unlock();    }   }}

設計一個緩存系統
緩存系統:你要取數據,需調用我的public Object getData(String key)方法,我要檢查我內部有沒有這個數據,如果有就直接返回,如果沒有,就從數據庫中查找這個數,查到后將這個數據存入我內部的存儲器中,下次再有人來要這個數據,我就直接返回這個數不用再到數據庫中找了。你要取數據不要找數據庫,來找我。

package com.ljq.test.thread; import java.util.HashMap;import java.util.Map;import java.util.concurrent.locks.ReadWriteLock;import java.util.concurrent.locks.ReentrantReadWriteLock; /** * 設計一個緩存系統 * * * @author Administrator * */public class CacheDemo {   private Map<String, Object> cache = new HashMap<String, Object>();   public static void main(String[] args) {    String key = "name";    CacheDemo cacheDemo = new CacheDemo();    System.out.println(cacheDemo.getData(key)); //從數據庫獲取數據    System.out.println(cacheDemo.getData(key)); //從緩存獲取數據    System.out.println(cacheDemo.getData(key)); //從緩存獲取數據  }   private ReadWriteLock rwl = new ReentrantReadWriteLock();   public Object getData(String key) {    rwl.readLock().lock(); //上讀鎖    Object value = null;    try {      value = cache.get(key); //先查詢內部存儲器中有沒有要的值      if (value == null) { //如果沒有,就去數據庫中查詢,并將查到的結果存入內部存儲器中        //釋放讀鎖、上寫鎖        rwl.readLock().unlock();        rwl.writeLock().lock();        try {          if (value == null) { //再次進行判斷,防止多個寫線程堵在這個地方重復寫            System.out.println("read data from database");            value = "張三";            cache.put(key, value);          }        } finally {          //設置完成 釋放寫鎖          rwl.writeLock().unlock();        }        //恢復讀寫狀態        rwl.readLock().lock();      }else{        System.out.println("read data from cache");      }    } finally {      rwl.readLock().unlock(); //釋放讀鎖    }    return value;  }}

返回結果:

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美影院成年免费版| 亚洲国产小视频| 久久精品国产欧美亚洲人人爽| 日韩av免费在线播放| 亚洲精品中文字幕女同| 亚洲老司机av| 97超级碰在线看视频免费在线看| 91高清视频免费观看| 欧美一级淫片videoshd| 狠狠躁夜夜躁人人躁婷婷91| 日韩欧美精品中文字幕| 欧美极品欧美精品欧美视频| 欧美巨乳美女视频| 九九九热精品免费视频观看网站| 91免费版网站入口| 国产手机视频精品| 国产精品一区二区三区成人| 中文字幕在线看视频国产欧美在线看完整| 正在播放欧美视频| 欧美电影免费观看| 欧美性xxxxx极品娇小| 久久精品欧美视频| 九九热视频这里只有精品| 日韩精品免费观看| 超碰精品一区二区三区乱码| 日本欧美精品在线| 欧美风情在线观看| 久久精品国产综合| 岛国视频午夜一区免费在线观看| 欧美精品免费播放| 国产精品视频一区国模私拍| 国产精品爱久久久久久久| 亚洲欧洲在线播放| 欧美亚洲成人xxx| 性视频1819p久久| xxxx欧美18另类的高清| 亚洲激情久久久| 亚洲日本中文字幕免费在线不卡| 日本高清+成人网在线观看| 日韩一区二区在线视频| 欧美大片在线影院| 菠萝蜜影院一区二区免费| 黑人巨大精品欧美一区二区免费| 国产日韩在线播放| 欧美中文在线视频| 亚洲成av人片在线观看香蕉| 色偷偷av一区二区三区乱| 国产一区深夜福利| 国产精品高潮视频| 亚洲国产精品久久久久秋霞蜜臀| 日韩经典第一页| 久久在线免费观看视频| 亚洲精品在线91| 尤物yw午夜国产精品视频| 国产深夜精品福利| 亚洲成人精品在线| 在线观看91久久久久久| 欧美劲爆第一页| 亚洲欧美日韩第一区| 九九热在线精品视频| 亚洲欧美日本另类| 亚洲国产欧美久久| 国产美女精品免费电影| 国产亚洲日本欧美韩国| 欧美日韩在线免费| 欧美一级片在线播放| 欧美一乱一性一交一视频| 亚洲人在线观看| 亚洲深夜福利在线| 亚洲成人激情视频| 欧美亚洲日本黄色| 午夜欧美大片免费观看| 欧美激情在线视频二区| 亚洲国产精品网站| 日本sm极度另类视频| 97精品视频在线| 精品亚洲男同gayvideo网站| 欧美一级片久久久久久久| 久久夜色精品国产亚洲aⅴ| 亚洲成人激情在线| 日本成人激情视频| 亚洲女成人图区| 日韩av综合中文字幕| 欧美一区视频在线| 亚洲成年人在线| 亚洲精品美女网站| 国产精品视频网址| 亚洲深夜福利视频| 国产日韩欧美在线视频观看| 亚洲精品456在线播放狼人| 欧美孕妇与黑人孕交| 欧美国产日韩免费| 亚洲日韩欧美视频| 在线播放国产一区中文字幕剧情欧美| 成人欧美一区二区三区黑人孕妇| 亚洲国产精品电影在线观看| 日韩亚洲欧美中文高清在线| 久久天天躁狠狠躁夜夜av| 日韩精品一区二区视频| 久久亚洲精品视频| 日韩精品高清在线观看| 国模极品一区二区三区| 97av视频在线| 欧美精品成人91久久久久久久| 国产精品久久久久久久久久久久久久| 日韩视频免费在线观看| 欧美限制级电影在线观看| 亚洲香蕉成视频在线观看| 国产精品美女无圣光视频| 亚洲精品资源在线| 欧美日韩国产麻豆| 最近日韩中文字幕中文| 国产亚洲日本欧美韩国| 久久久久久综合网天天| 精品国产网站地址| 欧美人与性动交| 国产精品久久久久7777婷婷| 国产精品久久久久77777| 成人国产在线视频| 91精品国产高清久久久久久91| 免费av在线一区| 一夜七次郎国产精品亚洲| 久久精品国产v日韩v亚洲| 91亚洲午夜在线| 丰满岳妇乱一区二区三区| 久久久精品视频成人| 精品欧美aⅴ在线网站| 1769国内精品视频在线播放| 欧美午夜丰满在线18影院| 日韩电视剧在线观看免费网站| 亚洲国产日韩欧美在线图片| 国产一区二区三区在线播放免费观看| 欧美视频一二三| 韩日精品中文字幕| 欧美性xxxxx极品娇小| 欧美成人精品在线视频| 色综合伊人色综合网站| 欧美在线视频在线播放完整版免费观看| 国产精品一区二区三区在线播放| 亚洲成色777777女色窝| 精品久久久久久久久久久| 久久久噜噜噜久噜久久| 色av中文字幕一区| 国产日韩综合一区二区性色av| 日韩精品极品在线观看播放免费视频| 亚洲一区二区三区四区在线播放| 国产第一区电影| 亚洲第一二三四五区| 国产69精品99久久久久久宅男| 欧美成人精品三级在线观看| 亚洲国产成人在线播放| 日韩av在线一区| 精品国产乱码久久久久久虫虫漫画| 在线观看精品自拍私拍| 久久国产精品久久精品| 国产91在线播放精品91| 中文字幕av日韩| 日韩精品中文在线观看| 欧美福利视频在线观看| 国产在线观看精品| 欧美成人精品影院| 91精品综合视频| 日韩欧美视频一区二区三区| 欧美成人免费va影院高清|