线程审查生产者和消费者

线程审查生产者和消费者

大家好,又见面了,我是全栈君,今天给大家准备了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)


相关推荐

  • if (donutString.indexOf(“dozen”) != -1)是什么意思

    if (donutString.indexOf(“dozen”) != -1)是什么意思

    2021年10月29日
  • shiro框架是什么_shiro+jwt

    shiro框架是什么_shiro+jwt1,什么是shiroApacheShiro是Java的一个安全框架。Shiro可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE环境,也可以用在JavaEE环境。Shiro可以帮助我们完成:认证、授权、加密、会话管理、与Web集成、缓存等。2,为什么要学shiro1,既然shiro将安全认证相关的功能抽取出来组成一个框架,使用shiro就可以非常快速的完成…

  • chmod 命令用法

    chmod 命令用法指令名称:chmod使用权限:所有使用者使用方式:chmod[-cfvR][–help][–version]modefile…说明:Linux/Unix的档案调用权限分为三级:档案拥有者、群组、其他。利用chmod可以藉以控制档案如何被他人所调用。参数:mode:权限设定字串,格式如下:[ugoa…][[±=][rwxX]…][,…],其中u表示该档案的拥有者,g表示与该档案的拥有者属于同一个群体(group)者,o表示其他以外的人,a表示这

  • linux使用docker_docker bash

    linux使用docker_docker bash安装命令sudoaptinstalldocker.io查看安装sudodocker–version添加用户到docker组sudogpasswd-a$USERdocker重启dockersudosystemctlrestartdocker查看状态sudodockerps-a查看镜像sudodockerimages创建容器dockerrun-it–nameubuntu1ubuntudockerrun-…

  • TXS0104E电平转换工作原理_电平指示芯片

    TXS0104E电平转换工作原理_电平指示芯片TXB0304作为新一代自动识别方向的电平转换芯片,跟上一代同类器件TXB0104相比,具有更低的工作电压(0.9V)、更高的转换速率(1.8V-3.3V间电平转换时最高速率140MBPS)、以及更小的封装等优势。也正是因为需要在较低工作电压时也能达到较高的转换速率,芯片在某些关键参数设计上,也跟上一代产品有所不同,比如ONE-SHOT输出电路的MOS管内阻必须要设计得更小一些。这就要求在某些特殊情况下应用时(比如输出PCB走线较长),需要额外留意电路原理图的设计和PCB布线设计,以减轻输出过冲和震荡的现象

  • ios分发平台搭建_app分发下载

    ios分发平台搭建_app分发下载iOS的内侧包管理,内部分发,或者企业包的分发和Android略有不同,需要通过manifest文件以及Safari内置命令来触发安装。

发表回复

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

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