JAVA多线程之生产者和消费者模式

Java并发编程系列20:多线程之生产者和消费者模式(使用Lock中Condition的await/signalAll) Java多线程之生产者和消费者模式(使用Lock中Condition的await/signalAll) 阅读详情

package com.test;

public class Test3 {
public static void main(String[] args) throws InstantiationException, IllegalAccessException {
Box box=new Box();
producers p1=new producers(box);
consumers p2=new consumers(box);
new Thread(p1).start();
new Thread(p2).start();

}

}
//产品类
class ManTou {
private int id;

public ManTou(int id) {
	this.id = id;
}

@Override
public String toString() {
	return "id=" + id;
}

}

//容器类
class Box {
private int index = 0;
ManTou[] arr = new ManTou[8];

public synchronized void push(ManTou mt) {
	
	while (index == arr.length) {
		try {
			this.wait();
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	this.notify();
	arr[index] = mt;
    index++;
	
}

public synchronized ManTou getManTou()  {
	
	if(index == 0) {
		try {
			this.wait();
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	
	}
	this.notify();	
	index--;	
	return arr[index];
}

}
//生产者
class producers implements Runnable {
private Box box ;

public producers(Box box) {
	this.box = box;
}

@Override
public void run() {
	for (int i = 0; i <10; i++) {
		ManTou mt = new ManTou(i);
		try {
			box.push(mt);
			System.out.println("生产一个:"+mt);
			Thread.sleep(200);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}
}

}
//消费者
class consumers implements Runnable {
private Box box = null;
public consumers(Box box) {
this.box = box;
}

@Override
public void run() {
	for (int i = 0; i <10; i++) {
		ManTou mt;
		try {
			mt = box.getManTou();
			System.out.println("取走一个:"+mt);
			Thread.sleep(200);
		} catch (InterruptedException e) {
		
			e.printStackTrace();
		}
	
	}

}

}

蓝牙配对鉴权过程深度剖析:Just Works/Numeric Comparison/Passkey Entry/OOB 协议流程 当你新买的智能手表与手机配对时,是否遇到过这样的情况:有时只需在手机上点击 "确认" 即可完成配对,有时却需要在手表上输入手机显示的 6 位数字,而连接车载蓝牙时可能又需要输入固定密码?这些差异背后,是蓝牙配对鉴权机制在默默工作。蓝牙配对鉴权是设备间建立安全连接的核心环节,直接关系到数据传输的保密性和设备身份的真实性。​ 阅读详情

相关推荐

基于OpenSSL的CA建立及证书签发(签发多域名/IP)

自签SSL证书(多域名/IP) 本文基于以下环境: 内核信息:Linux zabbix 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux 系统版本:CentOS Linux release 7.6.1810 (Core) OpenSSL版本:OpenSSL 1.0.2k-fips 26 Jan 2017 【前言】 在基于OpenSSL的CA建立及证书签发一文中(后面统.

hobby云说 4648

【学习笔记】多线程进阶JUC

JUC多线程进阶 视频课程地址 → 狂神说java(JUC并发编程最新版通俗易懂),再吹一波,QJ YYDS 笔记由自己一边听课记录+结合自己的一些个人理解构成 1.什么是JUC 源码 + 官方文档 JUC是 java util concurrent 业务:普通的线程代码 Thread Runnable: 没有返回值、效率相比于Callable 相对较低! 2.线程和进程 线程与进程的关系 进程是一个程序的执行;一个进程可以包含多个线程,线程是程序执行的最小单位(资源调度的最小单位) java默认

weixin_43849468的博客 345

手把手教你为ArduPilot添加自定义飞行模式:以自动巡检航线为例

本文详细介绍了如何为开源飞控ArduPilot添加自定义飞行模式,并以自动巡检航线为例,提供了从状态机设计、代码实现到地面站集成的完整开发指南。通过七步法手把手教学,帮助开发者深入理解飞控核心逻辑,实现无人机自主执行复杂巡检任务,满足行业应用定制需求。

weixin_29306875的博客 138

多线程同步 生产消费者模式

[code="java"] import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; ...

zenpignoy的专栏 159

树莓派5安装ROS2小白指南避坑攻略

手把手教你如何在树莓派5上顺利安装ROS2,避开常见问题与陷阱,提升配置效率。针对树莓派5安装ros2过程中的依赖冲突、源配置错误等高频难题提供解决方案,适合新手快速上手。

weixin_35754962的博客 1005

工业机器人关节拆装流程_一文读懂模块化直驱电机及机器人关节模组

私信“干货”二字,即可领取138G伺服与机器人专属及电控资料!如果说芯片是智能行业最为重要的核心元件,那么电机几乎可以说是支撑了整个自动化和大工业生产以及现代社会最为重要的部件,全世界90%的能源是由电机发出来的,而70%是由电机消耗调的,电机可以说是整个人类社会能源循环的占有绝对地位的产品。普通伺服电机伺服电机其实已经算是电动机中比较高端的类型,特别是永磁同步类型的伺服电机,由于其启动快速,惯量...

weixin_32159771的博客 2155

马上七夕到了,用各种编程语言实现10种浪漫表白方式

在七夕节这个充满爱意的日子里,用编程语言编写一些表白代码是个非常有趣的想法。以下是使用 各种编程语言Python、Java、JavaScript、H5等编写的 10 种简单表白代码示例,以下只是抛砖引玉,还需要你用心修改,对方一定能理解你的真心。

AI时代光年 1万+

【速通版!语义通信基础与前沿学习计划】

🧠语义通信基础与前沿学习计划

dally2的博客 1413

【程序员专属浪漫指南】:十大惊艳情书代码实现,Java也能写出诗意?

掌握程序员的浪漫表达,用代码传递深情。本文精选代码情书TOP10:Python/Java/JS浪漫实现,涵盖告白场景、算法创意与跨语言实现技巧,兼具技术美感与情感温度,让编程语言写出诗意情书,值得收藏。

StepLens的博客 736

告别TwinCAT:手把手教你用IgH EtherCAT Master在LinuxCNC上搭建实时运动控制平台

本文详细介绍了如何利用IgH EtherCAT Master和LinuxCNC搭建开源实时运动控制平台,替代商业软件TwinCAT。通过分步指南,包括实时Linux环境配置、EtherCAT主站安装、LinuxCNC集成及多轴同步控制实现,帮助开发者构建高性能、低成本的工业自动化解决方案。

weixin_42641741的博客 402

Xshell 连接 kali 虚拟机教程

启动ssh服务,启动后重新查看ssh服务状态,如下图active(running)正常。至此便可以直接使用Xshell登录kali系统了。至此虚拟机已经可以上网。-查看ssh服务状态。

qq_40726937的博客 2219

java多线程-生产者和消费者模式

java多线程-生产者和消费者模式 方法 利用 生产者和消费者,共享一个 空间, 生产者 生产 的放进这个空间, 而消费者等待 生产者 生产并放入空间,然后再进入获取 而 这个空间,可以称之为 缓冲区 下面是例子,可以进行复习 package com.demo.practice; /** * @version : 1.0 * @auther : Firewine * @Program Na...

Firewine 的博客 178

[毕设项目-大模型微调]现代文翻译文言文【基于LLaMA3.1-8B微调】

教你基于LLaMA3.1-8B微调如何做到现代文翻译文言文

逐梦苍穹的博客 2297

Java多线程模拟生产者和消费者模式

Java多线程模拟生产者和消费者模式 很久没有更新了,我又回来啦,因为之前也是蛮忙的,线程还是很有意思的,并且也是很重要,所以我就把这个有意思的案例分享粗来! 1.需求: 仓库采用list集合 仓库只能存储一个元素,一个元素就表示存满了 集合中元素个数为0,就表明仓库空了 保证List集合中永远最多只能存储一个元素 创建生产线程 Producer public class Producer...

qq_40733064的博客 733

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Java多线程并发采用BlockingQueue阻塞队列实现生产者和消费者模式

1、BlockingQueue简介 BlockingQueue 通常用于一个线程生产对象,而另外一个线程消费这些对象的场景。 一个线程往里边放,另外一个线程从里边取的一个 BlockingQueue。 一个线程将会持续生产新对象并将其插入到队列之中,直到队列达到它所能容纳的临界点。也就是说,它是有限的。如果该阻塞队列到达了其临界点,负责生产的线程将会在往里边插入新对象时发生阻塞。它会一直处于阻塞...

小白轩的博客 1227

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Java基础进阶多线程-生产者和消费者模式

1、什么是“生产者和消费者模式”?2、3、。。,,只是通知,

qq_46096136的博客 7950

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

java 生产者消费者_Java多线程-同步:synchronized 和线程通信:生产者消费者模式

一、同步:synchronized多个线程同时访问一个对象,可能造成非线程安全,数据可能错误,所谓同步:就是控制多个线程同时访就是控制多线程操作同一个对象时,注意是同一个对象,数据的准确性, 确保数据安全,但是加入同步后因为需要等待,所以效率相对低下。如:一个苹果,自己一个人去咬怎么都不会出问题,但是多个人同时去咬,这个时候如果控制不好,就可能会咬到对方了。 再强调一下是一个苹果。12306 中的...

weixin_39884074的博客 85

多线程-Java的经典实现-生产者和消费者模式

生产者和消费者模式是一种经典的并发编程模式,用于解决生产者和消费者之间的生产和消费问题。在该模式中,生产者负责生产数据并将数据放入共享的缓冲区(或队列)中,而消费者则负责从缓冲区中取出数据并进行消费。生产者和消费者之间通过共享的缓冲区进行通信,但彼此之间并不直接进行通信。

rainyonelove的专栏 1095

Java多线程实战篇:生产者和消费者模式

1、什么是生产者和消费者模式? 生产者和消费者模式是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通信,而是通过阻塞队列来进行通信,所以生产者生产完数据之后不等待消费者处理,直接扔给阻塞队列,消费者不找生产者要数据,而是直接从阻塞队列里取,阻塞队列就相当于一个缓冲区,平衡了生产者和消费者的处理能力 2、生产者和消费者模式的作用是什么? 1)、通过平衡生产者的生产能力和消...

hxt的博客 743

java 生产者消费者_Java 多线程实现生产者和消费者模式

一、生产者和消费者模式描述 生产者和消费者问题是线程模型中的经典问题:生产者和消费者在同一时间段内共用同一存储空间,生产者向空间里生产数据,而消费者从空间里取走数据。存在的问题:当生产者比消费者快时,消费者会漏掉一部分数据;当消费者比生产者快时,消费者会取走相同的数据。解决方案(考虑到线程安全问题,解决此问题有三种方式):同步代码块 同步方法 lock 锁机制, 通过创建 Lock ...

weixin_39568653的博客 151

Java多线程-同步:synchronized 和线程通信:生产者消费者模式

大家伙周末愉快,小乐又来给大家献上技术大餐。上次是说到了Java多线程的创建和状态|乐字节,接下来,我们再来接着说Java多线程-同步:synchronized 和线程通信:生产者消费者模式。 一、同步:synchronized 多个线程同时访问一个对象,可能造成非线程安全,数据可能错误,所谓同步:就是控制多个线程同时访就是控制多线程操作同一个对象时,注意是同一个对象,数据的准确性,...

bangyouyu7524的博客 205

Java多线程——生产者和消费者模式

生产者消费者模式生产者和消费者模式是一种并发设计模式,生产者消费者模式解决的是两者速率不一致而产生的阻抗不匹配,该模式通过平衡生产线程和消费线程的工作能力来提高程序的整体处理数据的速度。生产者消费者模式是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列,消费者不找生产者要数据,而是直

学习印记 Learning imprint 2919

delphi生产者消费者模式代码_Java多线程-同步:synchronized 和线程通信:生产者消费者模式...

大家伙周末愉快,小乐又来给大家献上技术大餐。上次是说到了Java多线程的创建和状态|乐字节,接下来,我们再来接着说Java多线程-同步:synchronized 和线程通信:生产者消费者模式一、同步:synchronized多个线程同时访问一个对象,可能造成非线程安全,数据可能错误,所谓同步:就是控制多个线程同时访就是控制多线程操作同一个对象时,注意是同一个对象,数据的准确性, 确保数据安全,但是...

weixin_34856060的博客 85

Java多线程之生产者和消费者模式解析

前言之前一直不明白生产者和消费者模式的实现方式,懂得原理,旧版的实现方式代码比较冗余。所以这里采用一种比较推荐的方式来实现。BlockingQueue阻塞队列介绍LinkedBlockingQueue由于LinkedBlockingQueue实现是线程安全的,实现了先进先出等特性,是作为生产者消费者的首选,LinkedBlockingQueue 可以指定容量,也可以不指定,不指定的话,默认最大是In

また明日ね 635

JAVA 多线程(生产者和消费者模式)

在生产-消费模式中:通常由两类线程,即若干个生产者的线程和若干个消费者的线程。生产者线程负责提交用户请求,消费者线程则负责具体处理生产者提交的任务,在生产者和消费者之间通过共享内存缓存区进行通信。 主要构成: provider:生产者线程负责生产数据 consumer:消费者线程负责消费生产的数据 示例: provider类:生产者 /**   *  生产者  * @author...

yanghzaini的专栏 1万+

java 线程 生产者与消费者_多线程之生产者和消费者模式

多线程生产者只有多个生产者,多个消费者!这里不讲基础的知识。代码如下packageThread;classResource{privateStringname;privateintcount=0;privatebooleanflag=false;publicsynchronizedvoidset(Stringname){while(flag){//这里必须用循环因为要...

weixin_29261711的博客 166
上一篇: tomcat 环境配置
下一篇: Java动态代理
_徐林
博客等级 码龄9年 6粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值