国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

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

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

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

[code]

[/co/**
 * single buffer consumer-producer problem.
 * by xu(xusiwei1236@163.com).
 * */
public class ConsumerProducer {

 static Object buffer = null;

 static Object mutex = new Object();

 static Object condConsumer = new Object();

 static Object condProducer = new Object();

 public static void main(String[] args) {
  Thread producer = new Thread() {
   public void run() {
//    for(int i=0; i<10; i++) {
    for(int i=0; ; i++) {
     // produce item.
     try {
      Thread.sleep(1000);
     } catch (InterruptedException e) {
      e.printStackTrace();
     }
     String item = new String("item-" + i);
     System.out.println("[producer] produced " + item);

     // wait for buffer empty.
     synchronized (condProducer) {
      while(buffer != null) {
       try {
        condProducer.wait();
       } catch (InterruptedException e) {
        e.printStackTrace();
       }
      }
     }

     // put item to buffer.     
     synchronized (mutex) {
      buffer = item;
      System.out.println("[producer] put " + item + " to buffer.");
     }

     // notify consumers.
     synchronized (condConsumer) {
      condConsumer.notify();
     }
    }
   }
  };

  Thread consumer = new Thread() {
   public void run() {
//    for(int i=0; i<10; i++) {
    for( ; ; ) {
     // wait for item come.
     synchronized (condConsumer) {
      while( buffer == null ) {
       try {
        condConsumer.wait();
       } catch (InterruptedException e) {
        e.printStackTrace();
       }
      }
     }

     // get item from buffer.
     String item = null;
     synchronized (mutex) {
      item = (String)buffer;
      buffer = null;
      System.out.println("  [consumer] get " + item + " from buffer.");
     }

     // consume item.
     try {
      Thread.sleep(500);
     } catch (InterruptedException e) {
      e.printStackTrace();
     }
     System.out.println("  [consumer] comsumed " + item);

     // notify producers.
     synchronized (condProducer) {
      condProducer.notify();
     }
    }
   }
  };

  consumer.start();
  producer.start();
 }
}de]

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 彰化市| 巴林右旗| 恭城| 天全县| 麻江县| 惠东县| 贵南县| 武夷山市| 资阳市| 南岸区| 普兰县| 长泰县| 房产| 邯郸市| 罗江县| 怀来县| 莒南县| 长海县| 丰镇市| 射洪县| 江西省| 武平县| 时尚| 宜君县| 萍乡市| 东山县| 柳江县| 稻城县| 桃园市| 勐海县| 甘德县| 新化县| 金沙县| 电白县| 福鼎市| 万源市| 平安县| 延庆县| 常熟市| 雷波县| 波密县|