线程审查生产者和消费者

线程审查生产者和消费者

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

采纳JAVA多线程技术,设计和实施符合节目制作商和消费者问题:桶的操作,它的最大容量为12子弹,生产者线程被压入螺纹,它被压入腔室,以保持子弹。消费者线程是线程退出。它在不断射出的子弹从室。

public class ShengChanZheXiaoFeiZhe {

	public static void main(String[] args) {
		Container c = new Container();
		BulletProducer producer = new BulletProducer(c);
		BulletConcumer consumer = new BulletConcumer(c);
		Thread t1 = new Thread(producer);
		Thread t2 = new Thread(consumer);
		t1.start();
		t2.start();
	}

}
//子弹类,id为序号
class Bullet{
	int id;
	Bullet(int id){
		this.id = id;
	}
	//重写toString方法。便于显示子弹序号。
	@Override
	public String toString() {
		return "第"+id+"个子弹";
	}
}
//装子弹的容器。具备一定空间。含有装子弹和发子弹的同步方法(是一个栈),方法须要推断栈的空和满,并使用等待唤醒机制控制。
class Container{
	Bullet[] arr = new Bullet[12];
	int index = 0;
	public synchronized void push(Bullet bullet){
		while(index==arr.length){
			try {
				this.wait();
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
		this.notify();
		arr[index] = bullet;
		index++;
	}
	public synchronized Bullet pop(){
		while(index==0){
			try {
				this.wait();
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
		this.notify();
		index--;
		return arr[index];
	}
}
//生产者。须要被一个线程运行故实现runnable接口,run方法中初始化子弹容器,不断建立子弹对象并向容器中push,并输出子弹序号。

class BulletProducer implements Runnable{ Container c = null; public BulletProducer(Container c) { this.c = c; } public void run(){ int i = 0; while(true){ Bullet bullet = new Bullet(++i); c.push(bullet); System.out.println("上膛"+bullet); } }}//消费者,也实现了runnable,建立容器,不断从容器中pop子弹。并输出子弹序号。class BulletConcumer implements Runnable{ Container c = null; public BulletConcumer(Container c) { this.c = c; } public void run(){ while(true){ Bullet bullet = c.pop(); System.out.println("->->->->->->发射"+bullet); } }}

版权声明:本文博客原创文章,博客,未经同意,不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/117358.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • pycharm的使用教程_gg修改器使用教程基础

    pycharm的使用教程_gg修改器使用教程基础PyCharm这款IDE功能虽然强大,但正因为它的强大,所以对于刚入手的人来说,在初期使用时会显得困难。那么,今天这篇文章我就来写一下PyCharm的基本操作,让那些刚使用的新手们能快速入手。2基本配置我们安装好PyCharm后,首先要进行一些小配置,比如主题,字体,字体颜色等。我们打开PyCharm后,点开file,找到Setting然后就会跳出Setting的窗口可以说PyC…

  • 时序逻辑电路基础_时序逻辑电路的逻辑功能

    时序逻辑电路基础_时序逻辑电路的逻辑功能题目:简述建立时间和保持时间,作图说明建立时间Tsu(setup):触发器在时钟上升沿到来之前,其数据输入端的数据必须保持不变的最小时间。保持时间Th(hold):触发器在时钟上升沿到来之后,其数

  • 魔百盒CM211-2系列(ZG/CH/YS)海思MV300H/310芯片-刷机固件及教程

    魔百盒CM211-2系列(ZG/CH/YS)海思MV300H/310芯片-刷机固件及教程魔百盒CM211-2系列(ZG/CH/YS)海思MV300H/310芯片-刷机固件及教程固件说明:1、魔百盒CM211-2-全系列-海思Hi3798MV300H/310-通用NAND和EMMC卡刷固件,支持红外蓝牙遥控,支持常见多种无线,同时支持RTL8822BS、RTL8822CS、MT7661、MT7663、MT7668等无线;2、解除官方屏蔽无线功能,有线和无线正常使用;3、代工标识说明:一般没标识是朝歌代工,带有ZG字母的就是朝歌代工,带有CH字母的就是长虹代工,带有YS或YST字

  • python提取时间段日期_timestamp时间戳

    python提取时间段日期_timestamp时间戳在python开发web程序时,需要调用第三方的相关接口,在调用时,需要对请求进行签名。需要用到unix时间戳。在python里,在网上介绍的很多方法,得到的时间戳是10位。而java里默认是13位(milliseconds,毫秒级的)。下面介绍python获得时间戳的方法:1、10时间戳获取方法:>>>importtime>>>t=time.tim…

  • mysql读写分离(使用Atlas实现)

    mysql读写分离(使用Atlas实现)mysql-proxy是官方提供的mysql中间件产品可以实现负载平衡,读写分离,等,但其不支持大数据量的分库分表且性能较差。下面介绍几款能代替其的mysql开源中间件产品:Atlas,tddl,Mycat。  Mysql中间件研究(Atlas,cobar,TDDL)

  • 图卷积神经网络综述_卷积神经网络提取图像特征

    图卷积神经网络综述_卷积神经网络提取图像特征在本篇中,我们将着大量笔墨介绍图卷积神经网络中的卷积操作。接下来,我们将首先介绍一下图卷积神经网络的大概框架,借此说明它与基于循环的图神经网络的区别。接着,我们将从头开始为读者介绍卷积的基本概念,以及

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号