学习

生产者和消费者

概述

生产者和消费者是一个经典的多线程协作模式,搞清楚生产者和消费者问题能够让我们对多线程编程的理解更加深刻!
所谓生产者和消费者问题,实际是主要是包含了两类线程
一类是生产者线程用于生产数据
一类是消费者线程用于消费数据
为了解耦生产者和消费者的关系,通常会采用共享的数据区域,就像是一个仓库。
生产者和消费者
为了体现生产和消费过程中的等待和唤醒,Java就提供了几个方法供我们使用,这几个方法在Object类中
Object类的等待和唤醒方法:
生产者和消费者

案例需求:

桌子类(Desk):定义表示臭豆腐数量的变量,定义标记桌子上有没有食物的变量,定义锁对象变量
生产者类(Cooker):实现Runnable接口,重写run()方法,设置线程任务
1.判断是否有臭豆腐,决定当前线程是否执行
2.如果有臭豆腐,就进入等待状态,如果没有臭豆腐,继续执行,生产臭豆腐
3.生产臭豆腐之后,更新桌子臭豆腐状态,唤醒消费者消费臭豆腐
消费者类(Foodie):实现Runnable接口,重写run()方法,设置线程任务
1.判断是否有臭豆腐,决定当前线程是否执行
2.如果没有臭豆腐,就进入等待状态,如果有臭豆腐,就消费臭豆腐
3.消费臭豆腐后,更新桌子臭豆腐状态,唤醒生产者生产臭豆腐
测试类(Demo):里面有main方法,main方法中代码步骤如下:
1.创建生产者线程和消费者线程对象
2.分别开启两个线程

代码实现:

生产者和消费者
生产者和消费者
生产者和消费者
生产者和消费者
console:
生产者和消费者

GL
GL 一个酷爱健身,热爱编程de爱国的小青年

发表评论