java生产者消费者
来源:互联网 发布:乐视网络大电影 编辑:程序博客网 时间:2024/05/16 19:53
生产者消费者模型是并发编程中比较经典的问题,其他的不多说,直接给出代码
线程同步采用synchronized,当然了,使用ReentrantLock或者Semaphore进行线程之间的通信也完全可以;
public class StringTest { public static void main(String[] args) { /*生产者消费者模型*/ Product product = new Product(); Thread produce = new Thread(new ProduceProduct(product)); produce.setName("生产者1 "); Thread comsume = new Thread(new ConsumeProduct(product)); comsume.setName("消费者1 "); Thread comsume2 = new Thread(new ConsumeProduct(product)); comsume2.setName("消费者2 "); produce.start(); comsume.start(); comsume2.start(); } } static class Product{ private int max_product = 10; private int min_product = 0; private int product = 0; public Product(int max_product){ this.max_product = max_product; } public Product(){ } public synchronized void produceProduct(){ if (this.product >= max_product) { try{ System.out.println("产品已经足够,请稍等"); wait(); }catch (Exception e) { } return; } product++; System.out.println(Thread.currentThread().getName() + " 生产了第:" + product + "个产品"); notifyAll(); } public synchronized void comsumeProduct(){ if (this.product <= min_product) { try{ System.out.println("产品不够了,请稍等"); wait(); }catch (Exception e) { } return; } System.out.println(Thread.currentThread().getName() + "消费了第:" + product + " 个产品"); product--; notifyAll(); } } static class ConsumeProduct implements Runnable{ private Product product; public ConsumeProduct(Product product) { this.product = product; } @Override public void run() { System.out.println("开始消费产品"); while(true){ try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } product.comsumeProduct(); } } } static class ProduceProduct implements Runnable{ private Product product; public ProduceProduct(Product product) { this.product = product; } @Override public void run() { System.out.println("开始生产产品"); while (true) { try{ Thread.sleep(1000); }catch (Exception e) { } product.produceProduct(); } } }}
1 0
- java多线程 消费者-生产者
- java生产者 消费者问题
- java生产者消费者
- java生产者消费者
- Java生产者消费者问题
- java多线程 消费者-生产者
- java生产者消费者问题
- java 多线程 生产者消费者
- JAVA [ 多线程 -- 生产者消费者 ]
- Java 生产者消费者问题
- java 生产者消费者问题
- java 生产者和消费者
- Java生产者消费者问题 .
- [Java] 生产者&消费者问题
- Java生产者消费者代码
- java 生产者与消费者
- Java 生产者消费者问题
- 生产者消费者java实现
- C++类中的static成员学习总结
- 使用call、apply和bind解决js中烦人的this,事件绑定时的this和传参问题
- JavaScript变量、作用域和内存问题(二)——垃圾收集器
- 用Python下载一个网页保存为本地的 HTML文件
- java中的增强型for循环
- java生产者消费者
- linux下的文件的查找
- 最短路模板poj2387
- CentOS7安装MySQL并开启远程访问
- Linux多命令协作:管道及重定向
- 点击鼠标右键崩盘解决方法
- NUDT银河之光校赛总结+校赛 F
- Codeforces gym 101149 L 最短路
- opencv实现对图片的批量读取、处理、存储