博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
多个生产者多个消费者,只有5个包子
阅读量:6592 次
发布时间:2019-06-24

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

hot3.png

package com.reveiew;/* * 多个生产者多个消费者,只有5个包子 * 跟第一,第二的例子不同的是,不是new一个对象调用锁,而是用BaoZi.calss直接调用锁 */public class MoreProuduceCustomMoreBaoZi {public static void main(String[] args) {Produce3 p = new Produce3();p.setName("生产者");Produce3 p2 = new Produce3();p2.setName("生产者2");Produce3 p3 = new Produce3();p3.setName("生产者3");customer3 c = new customer3();c.setName("消费者");customer3 c2 = new customer3();c2.setName("消费者2");customer3 c3 = new customer3();c3.setName("消费者3");p.start();c.start();p2.start();c2.start();p3.start();c3.start();}}class BaoZi3 {public static int num = 0;}class Produce3 extends Thread {public void run() {while (true) {synchronized (BaoZi3.class) {while (BaoZi3.num >=5) {// 等着消费者消费.生产者应该等待。需要用锁去调用wait方法。try {BaoZi3.class.wait();// wait会释放锁//哪个线程执行就是哪个线程等} catch (InterruptedException e) {e.printStackTrace();}}BaoZi3.num++;try {Thread.sleep(1000);// sleep不会释放锁} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName() + "生产一个包子"+"剩余包子"+BaoZi3.num);BaoZi3.class.notifyAll();// 唤醒消费者}}}}class customer3 extends Thread {public void run() {while (true) {synchronized (BaoZi3.class) {while (BaoZi3.num == 0) {try {BaoZi3.class.wait();} catch (InterruptedException e) {e.printStackTrace();}}BaoZi3.num--;try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName() + "消费一个包子"+"剩余包子"+BaoZi3.num);// 唤醒消费者BaoZi3.class.notifyAll();// 唤醒当前等待的一个线程}}}}

转载于:https://my.oschina.net/u/2541146/blog/549278

你可能感兴趣的文章
SSH原理与运用(一):远程登录
查看>>
Spring Framework 4.2 中的新功能和增强功能
查看>>
动态代理解决网站字符集编码
查看>>
Hbuilder--让手爽,飞一般的编码(二)
查看>>
后台统计
查看>>
React组件: 提取图片颜色
查看>>
3D应用开发中的欧拉角和旋转矩阵
查看>>
爬虫必备技能xpath的用法和实战
查看>>
RxJava2.0的初学者必备教程(九)
查看>>
记一次omi的项目之旅
查看>>
Android API级别、代号、发布时间及平台亮点整理
查看>>
安装配置nagios
查看>>
QQ第三方授权登录(带详细源码)
查看>>
LLDP(链路层发现协议)
查看>>
Ubuntu14 添加程序启动
查看>>
我的友情链接
查看>>
windows网络安全以及常见网络***方式
查看>>
警告 初始化默认驱动器时出错“找不到运行 Active Directory Web 服务的默认服务器。”...
查看>>
JS字符串转换数字
查看>>
centos7-修改主机名
查看>>