生产者消费者问题
消费者 生产者 问题
2023-09-14 08:59:40 时间
import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; public class TestProducerAndConsumer { @SuppressWarnings("unchecked") public static void main(String[] args) { BlockingQueue q = new ArrayBlockingQueue(2); Producer p = new Producer(q); Consumer c1 = new Consumer(q); Consumer c2 = new Consumer(q); new Thread(p).start(); new Thread(c1).start(); new Thread(c2).start(); class Consumer implements Runnable { private final BlockingQueue queue; Consumer(BlockingQueue q) { queue = q; public void run() { try { while (true) { consume(queue.take()); } catch (InterruptedException ex) { ex.printStackTrace(); void consume(Object x) { System.out.println("Consumer"); class Producer implements Runnable { @SuppressWarnings("unchecked") private final BlockingQueue queue; @SuppressWarnings("unchecked") Producer(BlockingQueue q) { queue = q; @SuppressWarnings("unchecked") public void run() { try { while (true) { queue.put(produce()); } catch (InterruptedException ex) { ex.printStackTrace(); Object produce() { System.out.println("Producer"); return new Object(); public class ProducerConsumer { public static void main(String[] args) { SyncStack ss = new SyncStack(); Producer p = new Producer(ss); Consumer c = new Consumer(ss); new Thread(p).start(); new Thread(p).start(); new Thread(p).start(); new Thread(c).start(); class WoTou { int id; WoTou(int id) { this.id = id; public String toString() { return "WoTou : " + id; class SyncStack { int index = 0; WoTou[] arrWT = new WoTou[6]; public synchronized void push(WoTou wt) { while(index == arrWT.length) { try { this.wait(); } catch (InterruptedException e) { e.printStackTrace(); this.notifyAll(); arrWT[index] = wt; index ++; public synchronized WoTou pop() { while(index == 0) { try { this.wait(); } catch (InterruptedException e) { e.printStackTrace(); this.notifyAll(); index--; return arrWT[index]; class Producer implements Runnable { SyncStack ss = null; Producer(SyncStack ss) { this.ss = ss; public void run() { for(int i=0; i i++) { WoTou wt = new WoTou(i); ss.push(wt); System.out.println("生产了:" + wt); try { Thread.sleep((int)(Math.random() * 200)); } catch (InterruptedException e) { e.printStackTrace(); class Consumer implements Runnable { SyncStack ss = null; Consumer(SyncStack ss) { this.ss = ss; public void run() { for(int i=0; i i++) { WoTou wt = ss.pop(); System.out.println("消费了: " + wt); try { Thread.sleep((int)(Math.random() * 1000)); } catch (InterruptedException e) { e.printStackTrace(); }
生产者消费者问题-代码详解(Java多线程) 你好我是辰兮,很高兴你能来阅读,本篇是整理了Java多线程中常见的生产者消费者问题,也是面试手写代码的高频问题,分享获取新知,大家共同进步!
Linux线程编程之生产者消费者问题【转】 转自:http://www.cnblogs.com/clover-toeic/p/4029269.html 本文基于顺序循环队列,给出Linux生产者/消费者问题的多线程示例,并讨论编程时需要注意的事项。
相关文章
- 如何洞察出消费者购买的关键时刻
- 图解Kafka消费者客户端分区分配策略
- 线程通信的生产者消费者模式
- kafka的消费者组(上)
- Dubbo消费者调用
- 网上315:中国消费者“被骗”报告
- R语言EG(Engle-Granger)两步法协整检验、RESET、格兰杰因果检验、VAR模型分析消费者价格指数CPI和生产者价格指数PPI时间序列关系
- 洞悉获客之道,林肯汽车开展高端社区精准营销俘获消费者芳心
- 决策树对消费者共享汽车使用情况调查数据可视化分析|附代码数据
- C++ 实现多线程生产者消费者模式
- java多线程示例 模拟生产者消费者详解编程语言
- Java多线程之并发协作生产者消费者设计模式详解编程语言
- java 生产者和消费者——BlockingQueue方式详解编程语言
- Java多线程15:Queue、BlockingQueue以及利用BlockingQueue实现生产者/消费者模型详解编程语言
- RocketMQ——Consumer消费模式及两种消费者辨析(DefaultMQPushConsumer和DefaultMQPullConsumer)详解编程语言
- python之生产者消费者模型详解编程语言
- iFixit创始人批评苹果和三星为消费者维修设备制造巨大障碍
- 模式实现Redis生产者消费者模式的方法(redis生产者消费者)
- 《消费者报告》再指特斯拉FSD软件缺乏安全保护措施
- 购物中心,如何激发消费者的购买欲
- 永辉超市未事先征得消费者同意违规收取1元包装费被罚
- 改变商业模式Redis消费者集群(消费者集群redis)
- 基于Redis实现非阻塞队列消费者(redis 队列消费者)
- 深入多线程之:深入生产者、消费者队列分析
- Ruby中用线程实现经典的生产者消费者问题代码实例
- 基于C#实现的多生产者多消费者同步问题实例