package com.chang.exer;
/**
* 题目:生产者将产品交给店员,消费者从店员处取走产品,店员一次最多只能持有固定数量(20)产品满仓时叫停生产者生产,售出产品后
* 有仓位时通知生产者继续生产;产品售空时通知消费者等待,进货后通知消费者来购买。
* 要求:简单体现多线程执行和通信特点即可。
* <p>
* 分析
* 1. 类:生产者类、店员类、消费者类;类的组合:生产者类{店员类型属性}、消费者类{店员类型属性}
* 2. 线程1:消费者从店员处购买产品,消费线程;线程2:店员从生产者进货产品,进货和生产线程;
* 3. 共享数据:产品数量(声明在店员类属性里,这样可以产生交互);
* 4. 线程通信:线程1产品售空时wait,产品售出时唤醒线程2;线程2满仓时wait,进货时唤醒线程1;
* 5.简化:逐个消费、逐个生产。
*
* @author Cao Longchang
* @create 2022-04-29 17:54
*/
// 测试类
class ProductTest {
public static void main(String[] args) {
Clerk cle1 = new Clerk();
Consumer con1 = new Consumer(cle1);
Consumer con2 = new Consumer(cle1);
Consumer con3 = new Consumer(cle1);
Producer1 pro = new Producer1(cle1);
Thread threadCon1 = new Thread(con1);
Thread threadCon2 = new Thread(con2);
Thread threadCon3 = new Thread(con3);
Thread threadPro = new Thread(pro);
threadCon1.setName("消费者甲");
threadCon2.setName("消费者乙");
threadCon3.setName("消费者丙");
threadPro.setName("生产者");
threadCon1.start();
threadCon2.start();
threadCon3.start();
threadPro.start();
}
}
// 生产者类
class Producer1 implements Runnable {
private Clerk clerk;
public Producer1(Clerk clerk
多线程——java练习题2
于 2022-04-30 12:05:17 首次发布