多线程内部类 实现的生产消费模型
来源:互联网 发布:手机淘宝设置货到付款 编辑:程序博客网 时间:2024/06/05 18:18
package com.test;public class Demo { public static final int maxCount = 100; public int count = 0; // 生产 public void produce(int num) { new Thread(new Runnable() { public void run() { synchronized (this) { if (count + num > 100) { System.out.println("count====" + count); try { wait(); //超出最大数量 等待 } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } System.out.println("produce 仓库" + count); count = count + num; System.out.println("produce 当前" + count); notifyAll(); // 唤醒所有等待线程 } } }).start(); } //消费 public void consume(int num) { new Thread(new Runnable() { @Override public void run() { synchronized (this) { if (num > count) { System.out.println("count====" + count); try { wait(); //最大数量不足 等待 } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } System.out.println("consume 仓库" + count); count = count - num; System.out.println("consume 当前" + count); notifyAll(); // 唤醒所有等待线程 } } }).start(); } public static void main(String[] args) { Demo demo = new Demo(); demo.produce(30); demo.produce(20); demo.consume(50); demo.consume(10); demo.produce(50); demo.produce(50); demo.consume(50); demo.consume(10); demo.consume(20); demo.consume(50); demo.consume(50); }}输出结果 :produce 仓库0produce 当前30produce 仓库30produce 当前50consume 仓库50consume 当前0count====0produce 仓库0produce 当前50produce 仓库50produce 当前100consume 仓库100consume 当前50consume 仓库50consume 当前40consume 仓库40consume 当前20count====20count====20
1 0
- 多线程内部类 实现的生产消费模型
- 多线程—NSThread实现生产消费模型。
- 生产/消费模型的java实现
- 生产/消费模型的java实现
- Wait, notify实现的生产消费模型
- wait/notify实现生产消费模型
- 阻塞队列实现--生产消费模型
- 生产消费模型demo
- 生产-消费模型
- 用内部类实现多线程的方案
- 多线程生产与消费
- 多线程生产消费问题
- Linux下的简单生产、消费模型的实现(上)
- Linux下的简单生产、消费模型的实现(下)
- 生产消费模式的几种实现
- 使用Lock锁机制实现 多线程的 多生产 多消费 模式。
- 多线程_匿名内部类的方式实现多线程程序
- 多线程(匿名内部类的方式实现多线程程序)
- easyui combotree 实现勾选checkbox 同时选择所有子节点,取消父节点同时取消所有子节点
- 雷神战争中简单megetexture地图制作
- view添加手势与tableView的cell点击冲突问题
- Python Numpy Tutorials: 数组--1
- Android Studio获取MD5,SHA1
- 多线程内部类 实现的生产消费模型
- 认识UART接口
- opencv笔记(10):Gabor特征
- http请求No peer certificate的解决方法
- 西部数码服务器配置记录
- platform_device与platform_driver
- ssm+freemark集成shiro
- MySQL存储过程
- Unity 生命周期及相关流程图官方版