生产者和消费者问题
来源:互联网 发布:ubuntu安装ftp server 编辑:程序博客网 时间:2024/05/10 11:56
package 生产者消费者;public class ProducerConsumerTest { public static void main(String[] args) { PublicResource resource = new PublicResource(); new Thread(new ProducerThread(resource)).start(); new Thread(new ConsumerThread(resource)).start(); new Thread(new ProducerThread(resource)).start(); new Thread(new ConsumerThread(resource)).start(); new Thread(new ProducerThread(resource)).start(); new Thread(new ConsumerThread(resource)).start(); }}
package 生产者消费者;/** * 生产者线程,负责生产公共资源 * @author dream * */public class ProducerThread implements Runnable{ private PublicResource resource; public ProducerThread(PublicResource resource) { this.resource = resource; } @Override public void run() { while (true) { try { Thread.sleep((long) (Math.random() * 1000)); } catch (InterruptedException e) { e.printStackTrace(); } resource.increase(); } }}
package 生产者消费者;/** * 消费者线程,负责消费公共资源 * @author dream * */public class ConsumerThread implements Runnable{ private PublicResource resource; public ConsumerThread(PublicResource resource) { this.resource = resource; } @Override public void run() { while (true) { try { Thread.sleep((long) (Math.random() * 1000)); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } resource.decrease(); } }}
package 生产者消费者;/** * 公共资源类 * @author dream * */public class PublicResource { private int number = 0; private int size = 10; /** * 增加公共资源 */ public synchronized void increase() { while (number >= size) { try { wait(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } number++; System.out.println("生产了1个,总共有" + number); notifyAll(); } /** * 减少公共资源 */ public synchronized void decrease() { while (number <= 0) { try { wait(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } number--; System.out.println("消费了1个,总共有" + number); notifyAll(); }}
0 0
- 消费者和生产者问题
- 生产者和消费者问题
- 生产者和消费者问题
- 生产者和消费者问题
- 消费者和生产者问题
- 生产者和消费者问题
- 生产者和消费者问题
- 生产者和消费者问题
- 生产者和消费者问题
- 生产者和消费者问题
- 生产者和消费者问题
- 生产者和消费者问题
- 生产者和消费者问题
- 生产者和消费者问题
- 生产者和消费者问题
- 生产者和消费者问题
- 生产者和消费者问题
- 生产者和消费者问题
- Python进行数据的多表Join关联操作
- ndk制定生成so的路径
- flare 命令整理
- java 万年历
- 个人记录-LeetCode 45. Jump Game II
- 生产者和消费者问题
- 快速实现工程makefile的简单通用模板
- VS2013/MFC编程入门之三十七(文档、视图和框架:各对象之间的关系)
- c++的操作符重载(输出流与字符串)
- Android 6.0 运行时权限处理完全解析
- Nginx/ZooKeeper 负载均衡的差异
- 点击按钮弹出单选列表对话框和加载Webview
- linux调度策略
- ROS进二阶学习笔记(4) - ROS and Multithread