生产者消费者问题(java)
来源:互联网 发布:地图制图软件 编辑:程序博客网 时间:2024/05/20 02:29
package com.testcase;public class TestThread {public static void main(String[] args) {Product product = new Product();Producer p1 = new Producer();p1.setProduct(product);Consumer c1 = new Consumer();c1.setProduct(product);Consumer c2 = new Consumer();c2.setProduct(product);Thread t1 = new Thread(p1);t1.setName("生产者1");t1.start();Thread t2 = new Thread(c1);t2.setName("消费者01");t2.start();Thread t3 = new Thread(c2);t3.setName("消费者02");t3.start();}}class Producer implements Runnable{private Product product;public Product getProduct() {return product;}public void setProduct(Product product) {this.product = product;}@Overridepublic void run() {while (true) {try {product.increase();} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}class Consumer implements Runnable{private Product product;public Product getProduct() {return product;}public void setProduct(Product product) {this.product = product;}@Overridepublic void run() {while (true) {try {product.decrease();Thread.yield();} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}class Product {private int num = 0;public int getNum() {return num;}public void setNum(int num) {this.num = num;}public synchronized void increase() throws InterruptedException {if (num < 100) {Thread.sleep(200);this.num ++;System.out.println(Thread.currentThread().getName() + "生产第" + num + "个产品!");notifyAll();} else {wait();}}public synchronized void decrease() throws InterruptedException {if (num > 0) {Thread.sleep(500);System.out.println(Thread.currentThread().getName() + "消费第" + num + "个产品!");this.num --;notifyAll();} else {wait();}}}
0 0
- 生产者消费者问题(java)
- java生产者 消费者问题
- Java生产者消费者问题
- java生产者消费者问题
- Java 生产者消费者问题
- java 生产者消费者问题
- Java生产者消费者问题 .
- [Java] 生产者&消费者问题
- Java 生产者消费者问题
- java 生产者消费者问题
- java 生产者消费者问题
- Java 生产者消费者问题
- java生产者消费者问题
- Java 生产者消费者问题
- java:生产者消费者问题
- Java-生产者消费者问题
- java-生产者消费者问题
- Java生产者消费者问题
- Python基础练习——字符串和字典的转换
- 137. Single Number II(C++)
- python抓取历年特码开奖记录
- 前端练习
- Memcache Redis MongoDB数据缓存系统方案对比与分析
- 生产者消费者问题(java)
- LIS常用数据交换协议
- CUDA学习日记6
- JDBC连接mysql提示noAccessToProcedureBodies=true
- linux ------- tail
- http协议
- 1069. 微博转发抽奖(20)
- Django(简介)
- swift学习笔记(18)- 扩展