博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
线程之生产汽车与购买汽车
阅读量:5094 次
发布时间:2019-06-13

本文共 1881 字,大约阅读时间需要 6 分钟。

package Thread1;/** * 主方法 *  * @author zhangyugeng  * 创建汽车类Car 创建汽车工厂类CarFactory 创建顾客类Client */public class CreateAndBuyCar {    public static void main(String[] args) {        Car car = new Car();        CarFactory factory = new CarFactory(car);        Client client = new Client(car);        new Thread(factory).start();        new Thread(client).start();    }}/** * @author zhangyugeng  * 汽车类 */class Car {    boolean existCar = false; // 判断是否存在汽车    /* 创造汽车的方法 */    public synchronized void createCar() throws InterruptedException {        if (existCar) {            wait(); // 存在汽车就等候        }        System.out.println("库存没有汽车,正在生产汽车");        Thread.sleep(6000); // 模拟生产车的时间        System.out.println("生产了大众汽车");        notifyAll(); // 唤醒其他线程,让顾客知道可以买车了        existCar = true;    }    /* 购买汽车的方法 */    public synchronized void buyCar() throws InterruptedException {        if (!existCar) {            wait(); // 不存在汽车,顾客就等候买车        }        System.out.println("正在购买汽车");        Thread.sleep(2000); // 模拟购买汽车时间        System.out.println("买好了大众汽车");        System.out.println();        Thread.sleep(1000);        notifyAll();        existCar = false;    }}/** * 汽车工厂类 */class CarFactory implements Runnable {    Car car;    public CarFactory(Car car) {        this.car = car;    }    @Override    public void run() {        try {            for (int i = 0; i < 3; i++)                car.createCar(); // 生产车        } catch (InterruptedException e) {            e.printStackTrace();        }    }}/** * 顾客类 */class Client implements Runnable {    Car car;    public Client(Car car) {        this.car = car;    }    @Override    public void run() {        try {            for (int i = 0; i < 3; i++)                car.buyCar(); // 购买车        } catch (InterruptedException e) {            e.printStackTrace();        }    }}

 

转载于:https://www.cnblogs.com/yugeng/p/7875769.html

你可能感兴趣的文章
Json格式的字符串转换为正常显示的日期格式
查看>>
[转]Android xxx is not translated in yyy, zzz 的解决方法
查看>>
Mobiscroll脚本破解,去除Trial和注册时间限制【转】
查看>>
iframe父子页面通信
查看>>
map基本用法
查看>>
Redis快速入门
查看>>
BootStrap---2.表格和按钮
查看>>
CRC计算模型
查看>>
Ajax之404,200等查询
查看>>
Aizu - 1378 Secret of Chocolate Poles (DP)
查看>>
csv HTTP简单表服务器
查看>>
OO设计的接口分隔原则
查看>>
数据库连接字符串大全 (转载)
查看>>
IO流写出到本地 D盘demoIO.txt 文本中
查看>>
Screening technology proved cost effective deal
查看>>
Redis Cluster高可用集群在线迁移操作记录【转】
查看>>
二、spring中装配bean
查看>>
VIM工具
查看>>
javascript闭包
查看>>
创建本地yum软件源,为本地Package安装Cloudera Manager、Cloudera Hadoop及Impala做准备...
查看>>