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

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

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

經(jīng)典的生產(chǎn)者消費(fèi)者問(wèn)題模擬。此程序模擬最簡(jiǎn)單情形——單緩沖。為模擬實(shí)際情況,consume item和produce item時(shí)加了延時(shí),可以通過(guò)修改延時(shí)模擬不同的生成消費(fèi)速率。

[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)文章

  • 通過(guò)實(shí)例了解java序列化機(jī)制

    通過(guò)實(shí)例了解java序列化機(jī)制

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

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

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

    intellij idea tomcat熱部署配置教程

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

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

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

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

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

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

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

    詳解Java如何使用注解來(lái)配置Spring容器

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

    Shiro整合Springboot和redis,jwt過(guò)程中的錯(cuò)誤shiroFilterChainDefinition問(wèn)

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

    java 文件名截取方法

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

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

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

最新評(píng)論

山丹县| 大厂| 大姚县| 博兴县| 凤城市| 维西| 韶山市| 大方县| 山西省| 周宁县| 南康市| 克什克腾旗| 扶沟县| 柳州市| 梅州市| 金门县| 耒阳市| 洞头县| 广宁县| 信阳市| 上虞市| 亳州市| 永城市| 涞水县| 吉林市| 时尚| 中方县| 萍乡市| 宽城| 雷山县| 登封市| 时尚| 马山县| 香港| 徐闻县| 焦作市| 云林县| 咸阳市| 南和县| 顺义区| 岱山县|