多线程生产者消费者问题详解.docx

上传人:小飞机 文档编号:3391467 上传时间:2023-03-12 格式:DOCX 页数:3 大小:37.06KB
返回 下载 相关 举报
多线程生产者消费者问题详解.docx_第1页
第1页 / 共3页
多线程生产者消费者问题详解.docx_第2页
第2页 / 共3页
多线程生产者消费者问题详解.docx_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《多线程生产者消费者问题详解.docx》由会员分享,可在线阅读,更多相关《多线程生产者消费者问题详解.docx(3页珍藏版)》请在三一办公上搜索。

1、多线程生产者消费者问题详解/* * 生产者/消费者问题 * 生产者(Productor)将产品交给店员(Clerk),而消费者(Customer)从店员处取走产品, * 店员一次只能持有固定数量的产品(比如:20),如果生产者试图生产更多的产品,店员会叫生产者停一下, * 如果店中有空位放产品了再通知生产者继续生产;如果店中没有产品了,店员会告诉消费者等一下, * 如果店中有产品了再通知消费者来取走产品。 分析: 1.是否涉及到多线程的问题?是!生产者、消费者 2.是否涉及到共享数据?有!考虑线程的安全 3.此共享数据是谁?即为产品的数量 4.是否涉及到线程的通信呢?存在这生产者与消费者的通信

2、 */ public class TestProductConsume public static void main(String args) Clerk clerk=new Clerk; Producer p1=new Producer(clerk); Consumer c1=new Consumer(clerk); Thread t1=new Thread(p1);/一个生产者的线程 Thread t2=new Thread(c1);/一个消费者的线程 t1.setName(生产者1); t1.start; t2.setName(消费者1); t2.start; Thread t3=ne

3、w Thread(p1);/一个生产者的线程 Thread t4=new Thread(c1);/一个消费者的线程 t3.setName(生产者2); t3.start; t4.setName(消费者2); t4.start; class Producer implements Runnable / 生产者 Clerk clerk; public Producer(Clerk clerk) this.clerk = clerk; Override public void run System.out.println(生产者开始生产产品!); while (true) clerk.addProd

4、uct; class Clerk / 店员 int product; public synchronized void addProduct / 生产 if (product = 20) try wait; catch (InterruptedException e) / TODO Auto-generated catch block e.printStackTrace; else product+; System.out.println(Thread.currentThread.getName + :生产了第 + product + 个产品); notifyAll; public synch

5、ronized void consumeProduct / 消费产品 if (product 0) try wait; catch (InterruptedException e) / TODO Auto-generated catch block e.printStackTrace; else System.out.println(Thread.currentThread.getName + :消费了第 + product + 个产品); product-; notifyAll; class Consumer implements Runnable / 消费者 Clerk clerk; public Consumer(Clerk clerk) this.clerk = clerk; public void run System.out.println(消费者消费产品); while (true) clerk.consumeProduct; 本案例来自尚硅谷视频教程编写:编写人:魏祖清

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号