最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java解決單緩沖生產(chǎn)者消費者問題示例

 更新時間:2014年04月27日 11:59:07   作者:  
這篇文章主要介紹了java解單緩沖生產(chǎn)者消費者問題示例,需要的朋友可以參考下

經(jīng)典的生產(chǎn)者消費者問題模擬。此程序模擬最簡單情形——單緩沖。為模擬實際情況,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]

相關(guān)文章

  • 通過實例了解java序列化機制

    通過實例了解java序列化機制

    這篇文章主要介紹了通過實例了解java序列化機制,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • Maven學(xué)習(xí)----Maven安裝與環(huán)境變量配置教程

    Maven學(xué)習(xí)----Maven安裝與環(huán)境變量配置教程

    這篇文章主要給大家介紹了關(guān)于如何利用Maven入手Spring Boot第一個程序的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-06-06
  • intellij idea tomcat熱部署配置教程

    intellij idea tomcat熱部署配置教程

    這篇文章主要介紹了intellij idea tomcat熱部署配置教程圖解,非常不錯,具有一定的參考借鑒價值,需要的朋友參考下吧
    2018-07-07
  • Java利用位運算實現(xiàn)加減運算詳解

    Java利用位運算實現(xiàn)加減運算詳解

    這篇文章主要為大家介紹了如何使用位運算來實現(xiàn)加減功能,也就是在整個運算過程中不能出現(xiàn)加減符號。文中的示例代碼講解詳細,感興趣的可以了解一下
    2022-12-12
  • SpringBoot整合Graylog做日志收集實現(xiàn)過程

    SpringBoot整合Graylog做日志收集實現(xiàn)過程

    這篇文章主要為大家介紹了SpringBoot整合Graylog做日志收集實現(xiàn)過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • 關(guān)于Java語法糖以及語法糖的原理和用法

    關(guān)于Java語法糖以及語法糖的原理和用法

    這篇文章主要介紹了關(guān)于Java什么是語法糖以及語法糖的種類,也稱糖衣語法,是由英國計算機學(xué)家?Peter.J.Landin?發(fā)明的一個術(shù)語,指在計算機語言中添加的某種語法,這種語法對語言的功能并沒有影響,但是更方便程序員使用,需要的朋友可以參考下
    2023-05-05
  • 詳解Java如何使用注解來配置Spring容器

    詳解Java如何使用注解來配置Spring容器

    這篇文章我們將介紹如何在Java代碼中使用注解來配置Spring容器,文中的示例代碼講解詳細,對我們學(xué)習(xí)有一定參考價值,感興趣的可以了解一下
    2022-06-06
  • Shiro整合Springboot和redis,jwt過程中的錯誤shiroFilterChainDefinition問題

    Shiro整合Springboot和redis,jwt過程中的錯誤shiroFilterChainDefinition問

    這篇文章主要介紹了Shiro整合Springboot和redis,jwt過程中的錯誤shiroFilterChainDefinition問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • java 文件名截取方法

    java 文件名截取方法

    在實際開發(fā)應(yīng)用中會應(yīng)到截取文件名,本文將介紹java中文件名的截取,需要了解的朋友可以參考下
    2012-11-11
  • Java xml數(shù)據(jù)格式返回實現(xiàn)操作

    Java xml數(shù)據(jù)格式返回實現(xiàn)操作

    這篇文章主要介紹了Java xml數(shù)據(jù)格式返回實現(xiàn)操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08

最新評論

涟水县| 临西县| 焉耆| 乃东县| 罗江县| 光山县| 军事| 连南| 内乡县| 兴城市| 通许县| 五家渠市| 郸城县| 拉萨市| 哈密市| 秦皇岛市| 连南| 达拉特旗| 新绛县| 高邮市| 寿阳县| 会泽县| 松滋市| 东丰县| 民丰县| 海盐县| 阿合奇县| 崇义县| 蕲春县| 福州市| 鄂托克旗| 杂多县| 旬阳县| 新田县| 祁连县| 福州市| 达日县| 石景山区| 蓬莱市| 开原市| 清流县|