星空网 > 软件开发 > Java

java_Thread生产者与消费者 Demo

 1 package com.bjsxt.Thread.Demo; 2 public class ProducerConsumer { 3   /** 4    * 生产者与消费者 5    * @param args 6   */ 7   public static void main(String[] args) {// 模拟线程 8     SyncStack ss = new SyncStack(); 9     Producer p = new Producer(ss); 10     Consumer c = new Consumer(ss); 11     new Thread(p).start();// 开启线程 12     new Thread(c).start();// 开启线程 13   } 14 } 15  16 /** 17  * Woto类 18 */ 19 class WoTo { 20   int id; 21   WoTo(int id) { 22     this.id = id; 23   } 24   public String toString() { 25     return "WoTo : " + id; 26   } 27 } 28  29 /** 30  * 框类(用来装馒头) 31  * @author wenfei 32 */ 33 class SyncStack { 34   int index = 0; 35   WoTo[] arrwt = new WoTo[6]; 36  37   public synchronized void push(WoTo wt) { 38  39     while (index == arrwt.length) { 40  41       try { 42         this.wait();// 暂定当前对象 43  44       } catch (InterruptedException e) { 45         e.printStackTrace(); 46       } 47     } 48     this.notify();// 叫醒当前线程 49     arrwt[index] = wt; 50     index++; 51   } 52  53   public synchronized WoTo pop() { 54     while (index == 0) { 55  56       try { 57         this.wait(); 58       } catch (InterruptedException e) { 59         e.printStackTrace(); 60       } 61     } 62     this.notify(); 63     index--; 64     return arrwt[index]; 65   } 66 } 67  68 /** 69  * 生产者 70  *  71  * @author wenfei 72 */ 73 class Producer implements Runnable { 74   SyncStack ss = null; 75  76   Producer(SyncStack ss) { 77     this.ss = ss; 78   } 79  80   @Override 81   public void run() { 82     // 生产wt 83     for (int i = 0; i <= 100; i++) { 84       WoTo wt = new WoTo(i); 85       ss.push(wt);// 往篮子里装窝头 86       System.out.println("生产了--->" + wt); 87       try { 88         // Thread.sleep(1000);//每生产一个睡眠一秒 89         Thread.sleep((int) Math.random() * 1000); 90       } catch (InterruptedException e) { 91         // TODO Auto-generated catch block 92         e.printStackTrace(); 93       } 94     } 95   } 96  97 } 98  99 /**100  * 消费者101  * 102  * @author wenfei103 */104 class Consumer implements Runnable {105   SyncStack ss = null;106 107   Consumer(SyncStack ss) {108     this.ss = ss;109   }110 111   @Override112   public void run() {113     for (int i = 0; i <= 100; i++) {114       WoTo wt = ss.pop();115       System.out.println("消费了--->" + wt);116       try {117         // Thread.sleep(1000);//每消费一个睡眠一秒118         Thread.sleep((int) Math.random() * 1000);//119       } catch (InterruptedException e) {120         // TODO Auto-generated catch block121         e.printStackTrace();122       }123       // System.out.println(wt);124     }125   }126 127 }

 

 




原标题:java_Thread生产者与消费者 Demo

关键词:JAVA

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

亚马逊数据选品五大招:https://www.ikjzd.com/articles/6297
亚马逊旺季FBA物流日历表/圣诞节前各目的地最后收件时间表:https://www.ikjzd.com/articles/6298
亚马逊Amazon Business 2018年营收或达100亿美元!:https://www.ikjzd.com/articles/6299
亚马逊8月份又出新政策,你的产品中招了吗?:https://www.ikjzd.com/articles/63
社交电商vs传统电商,哪家更强?:https://www.ikjzd.com/articles/6300
索要评论简单范本,实用干货分享:https://www.ikjzd.com/articles/6301
Twitter和Meta的付费认证服务值得购买吗?:https://www.kjdsnews.com/a/1836404.html
零售晚报:携程发布318成绩单 近800万商家GMV增长101% :https://www.kjdsnews.com/a/1836405.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流