一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

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

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - java解決單緩沖生產者消費者問題示例

java解決單緩沖生產者消費者問題示例

2019-11-21 14:11Java教程網 JAVA教程

這篇文章主要介紹了java解單緩沖生產者消費者問題示例,需要的朋友可以參考下

經典的生產者消費者問題模擬。此程序模擬最簡單情形——單緩沖。為模擬實際情況,consume item和produce item時加了延時,可以通過修改延時模擬不同的生成消費速率。

  1. /** 
  2.  * single buffer consumer-producer problem. 
  3.  * by xu([email protected]). 
  4.  * */ 
  5. public class ConsumerProducer { 
  6.  
  7.  static Object buffer = null
  8.  
  9.  static Object mutex = new Object(); 
  10.  
  11.  static Object condConsumer = new Object();  
  12.  
  13.  static Object condProducer = new Object(); 
  14.  
  15.  public static void main(String[] args) { 
  16.   Thread producer = new Thread() { 
  17.    public void run() { 
  18. //    for(int i=0; i<10; i++) { 
  19.     for(int i=0; ; i++) { 
  20.      // produce item. 
  21.      try { 
  22.       Thread.sleep(1000); 
  23.      } catch (InterruptedException e) { 
  24.       e.printStackTrace(); 
  25.      } 
  26.      String item = new String("item-" + i); 
  27.      System.out.println("[producer] produced " + item); 
  28.  
  29.      // wait for buffer empty. 
  30.      synchronized (condProducer) { 
  31.       while(buffer != null) { 
  32.        try { 
  33.         condProducer.wait(); 
  34.        } catch (InterruptedException e) { 
  35.         e.printStackTrace(); 
  36.        } 
  37.       } 
  38.      } 
  39.  
  40.      // put item to buffer.      
  41.      synchronized (mutex) { 
  42.       buffer = item; 
  43.       System.out.println("[producer] put " + item + " to buffer."); 
  44.      } 
  45.  
  46.      // notify consumers. 
  47.      synchronized (condConsumer) { 
  48.       condConsumer.notify(); 
  49.      } 
  50.     } 
  51.    } 
  52.   }; 
  53.  
  54.   Thread consumer = new Thread() { 
  55.    public void run() { 
  56. //    for(int i=0; i<10; i++) { 
  57.     for( ; ; ) { 
  58.      // wait for item come. 
  59.      synchronized (condConsumer) { 
  60.       while( buffer == null ) { 
  61.        try { 
  62.         condConsumer.wait(); 
  63.        } catch (InterruptedException e) { 
  64.         e.printStackTrace(); 
  65.        } 
  66.       } 
  67.      } 
  68.  
  69.      // get item from buffer. 
  70.      String item = null
  71.      synchronized (mutex) { 
  72.       item = (String)buffer; 
  73.       buffer = null
  74.       System.out.println("  [consumer] get " + item + " from buffer."); 
  75.      } 
  76.  
  77.      // consume item. 
  78.      try { 
  79.       Thread.sleep(500); 
  80.      } catch (InterruptedException e) { 
  81.       e.printStackTrace(); 
  82.      } 
  83.      System.out.println("  [consumer] comsumed " + item); 
  84.  
  85.      // notify producers. 
  86.      synchronized (condProducer) { 
  87.       condProducer.notify(); 
  88.      } 
  89.     } 
  90.    } 
  91.   }; 
  92.  
  93.   consumer.start(); 
  94.   producer.start(); 
  95.  } 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲男人天| 国内自拍网红在综合图区 | 亚洲精品乱码蜜桃久久久 | 成人欧美一区二区三区白人 | 白俄罗斯bbbsss | 大学生初次破苞免费视频 | 免费观看a毛片一区二区不卡 | 亚洲AV精品一区二区三区不卡 | 强女明星系列小说 | 精品午夜中文字幕熟女人妻在线 | 动漫美女人物被黄漫小说 | 欧美x×x| 欧美精品99 | 高清视频在线播放ww | 98色花堂永久地址国产精品 | 免费精品一区二区三区在线观看 | 羞羞漫画免费漫画页面在线看漫画秋蝉 | 第四色男人天堂 | 成人啪精品视频免费网站 | 草草在线影院 | 国产精品久久久久久久久久久威 | 黄a在线观看 | 国产91无毒不卡在线观看 | 36美女厕所撒尿全过程 | 国产日韩欧美在线观看不卡 | 9久热这里只有精品视频在线观看 | 性做久久久久久久久老女人 | 久久综合香蕉久久久久久久 | 亚洲国产午夜看片 | 免费看片aⅴ免费大片 | 国产精品久久国产精品99 | 99久久精品免费看国产一区 | 阿 好深 快点 老师受不了 | 深夜福利影院 | 国产愉拍 | 特级夫妻大片免费在线播放 | 国产成人h综合亚洲欧美在线 | 色综合色狠狠天天久久婷婷基地 | 亚洲国产日韩成人综合天堂 | 国产精品性视频免费播放 | 国产精品视频免费看 |