Java多线程之生产者消费者
来源:互联网 发布:华为交换机端口模式 编辑:程序博客网 时间:2024/05/20 13:07
生产者和消费者的实例:
商品类:
/**
* 商品类
*
*/
public class Goods {
final int MAX_NUMBER = 30; // 最大数量
final int MIN_NUMBER = 0; // 最小数量
private int number;
public Goods(int number) {
super();
this.number = number;
}
public synchronized int getNumber() {
return number;
}
// 添加
public void addNumber() throws InterruptedException{
if(number >= MAX_NUMBER){
wait();
}
synchronized(this){ // 同步代码块
this.number = number + 1;
System.out.println("生产者生产商品,商品数为:" + number);
}
notifyAll();
}
// 减少
public void sumNumber() throws InterruptedException{
if(number <= MIN_NUMBER){
wait();
}
synchronized(this){
this.number = number - 1;
System.out.println("消费者消费商品,商品数为:" + number);
}
notifyAll();
}
}
测试类:
package book_14.synch;
public class Test {
public static void main(String[] args) {
// 创建对象
Goods good = new Goods(20); // 开始的商品数量设为20
while(true){
// 生产者
Runnable r1 = () ->{
try {
while(true){
good.addNumber();
//Thread.sleep(10);
}
} catch (Exception e) {
// TODO: handle exception
}
};
Thread t1 = new Thread(r1);
t1.start();
// 消费者
Runnable r2 = () ->{
try {
while(true){
good.sumNumber();
//Thread.sleep(10);
}
} catch (Exception e) {
// TODO: handle exception
}
};
Thread t2 = new Thread(r2);
t2.start();
}
}
}
- [Java]多线程之生产者消费者
- java多线程之生产者消费者
- Java多线程之生产者消费者
- Java 多线程之生产者消费者
- java多线程之生产者消费者队列
- java多线程之生产者消费者队列
- java多线程之消费者生产者模式
- java多线程之生产者消费者经典问题
- Java多线程之消费者生产者模式
- java多线程之生产者消费者问题
- JAVA 多线程之生产者与消费者
- Java多线程之生产者与消费者
- 多线程编程之生产者消费者(java实现)
- java多线程之消费者生产者模式
- java多线程之消费者生产者模式
- java多线程之消费者生产者模式
- 【java多线程之】生产者消费者示例
- java多线程之消费者生产者模式
- phpmyadmin出现 2002错误
- SpringMVC的REST风格的四种请求方式
- 【转载】八年phper的高级工程师面试之路
- C#常用命名空间
- JavaScript基础之操作表单
- Java多线程之生产者消费者
- Win7 x64 Eclipse无法识别手机 / adb interface有黄色感叹号,无法识别
- 设计模式--单例模式(JAVA语言实现)
- Proxy和InvocationHandler实现自己的AOP
- ubantu16.04安装英伟达显卡驱动
- JAVA8新特性(四)——Stream API
- 如何使用RedisTemplate访问Redis数据结构
- RTMPdump(libRTMP) 源代码分析 5: 建立一个流媒体连接 (NetConnection部分)
- 关于ext最近遇到的坑