【多线程】多线程交互+生产者消费者案例
【多线程】多线程交互生产者消费者案例1wait、notify、notifyAll2生产者消费者问题1wait、notify、notifyAllwait方法和notify方法并不是Thread线程上的方法它们是Object上的方法所有的Object都可以被用来作为同步对象。wait()的意思是 让占用了这个同步对象的线程临时释放当前的占用并且等待。 所以调用wait是有前提条件的一定是在synchronized块里否则就会出错。notify() 的意思是通知一个等待在这个同步对象上的线程你可以苏醒过来了有机会重新占用当前对象了。notifyAll() 的意思是通知所有的等待在这个同步对象上的线程你们可以苏醒过来了有机会重新占用当前对象了。2生产者消费者问题1-使用栈来存放数据并且把栈改造为支持线程安全。当栈内的数据为0的时候访问pull方法的线程就会等待不为0的时候所有访问pull方法的线程都会被唤醒。当栈内的数据满的时候访问push方法的线程就会等待当不是满的时候所有访问push方法的线程都会被唤醒。2-提供一个生产者线程类生产随机大写字符压入栈堆3-提供一个消费者线程类从栈堆中弹出字符并打印4-提供一个测试类使两个生产者和三个消费者线程同时运行publicclassMyStackT{LinkedListTvaluesnewLinkedListT();//自定义方法内嵌栈的方法等于把栈的方法addLast改造成线程安全方法push//如过栈满了就通知线程等待没满就唤醒线程继续存放publicsynchronizedvoidpush(Tt){while(values.size()200){try{this.wait();}catch(InterruptedExceptione){e.printStackTrace();}}this.notifyAll();values.addLast(t);}//自定义方法内嵌栈的方法等于把栈的方法removeLast改造成线程安全方法pull//如果栈空了就通知线程等待有值了就唤醒线程继续获取publicsynchronizedTpull(){while(values.isEmpty()){try{this.wait();}catch(InterruptedExceptione){e.printStackTrace();}}this.notifyAll();returnvalues.removeLast();}publicTpeek(){returnvalues.getLast();}}publicclassProducerThreadextendsThread{privateMyStackCharacterstack;publicProducerThread(MyStackCharacterstack,Stringname){super(name);this.stackstack;}Overridepublicvoidrun(){while(true){charcrandomChar();System.out.println(this.getName() 压入c);stack.push(c);try{Thread.sleep(100);}catch(InterruptedExceptione){e.printStackTrace();}}}publiccharrandomChar(){return(char)(Math.random()*(Z1-A)A);}}publicclassConsumerThreadextendsThread{privateMyStackCharacterstack;publicConsumerThread(MyStackCharacterstack,Stringname){super(name);this.stackstack;}Overridepublicvoidrun(){while(true){charcstack.pull();System.out.println(this.getName() 弹出c);stack.push(c);try{Thread.sleep(100);}catch(InterruptedExceptione){e.printStackTrace();}}}}publicclassTestThreadProductConsume{publicstaticvoidmain(String[]args){MyStackCharacterstacknewMyStack();for(inti0;i5;i){newProducerThread(stack,生产者i).start();}for(inti0;i5;i){newConsumerThread(stack,消费者i).start();}}}

相关新闻

abap通过PI平台实现rest json的接收

abap通过PI平台实现rest json的接收

之前做系统集成都是用soap协议,由于大部分人没有接触过soap,所以学习了po端开发rest接口,方便对接,实现记录如下: ESB配置后台正常做配置 IB配置 接口配置 通道配置在erp系统上的sproxy激活,写个测试代码 使…

2026/7/22 15:40:58 阅读更多 →
abap通过PI平台实现rest json的发送

abap通过PI平台实现rest json的发送

之前做系统集成都是用soap协议,由于大部分人没有接触过soap,所以学习了po端开发rest接口,方便对接,实现记录如下: ESB配置后台正常做配置 IB配置 接口配置通道配置 然后服务端接口的开发发现接收返回数据会有大小写自动…

2026/7/22 15:40:58 阅读更多 →
【限时解密】头部金融/医疗/法律机构内部AI质量红线标准(附12项强制校验SOP清单)

【限时解密】头部金融/医疗/法律机构内部AI质量红线标准(附12项强制校验SOP清单)

更多请点击: https://kaifayun.com 第一章:【限时解密】头部金融/医疗/法律机构内部AI质量红线标准(附12项强制校验SOP清单) 头部金融机构、三甲医院与省级以上司法机关在部署AI系统时,普遍执行高于国标GB/T 40643—2…

2026/7/22 15:40:58 阅读更多 →

最新新闻

Django毕设项目:基于Python的 智慧校园疫情防控信息化管理系统 校园防疫台账数字化管理系统设计与实现(源码+文档,讲解、调试运行,定制等)

Django毕设项目:基于Python的 智慧校园疫情防控信息化管理系统 校园防疫台账数字化管理系统设计与实现(源码+文档,讲解、调试运行,定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/23 18:21:30 阅读更多 →
企业选AI培训机构怎么避坑?聊城靠谱的AI内训机构挑选标准

企业选AI培训机构怎么避坑?聊城靠谱的AI内训机构挑选标准

在生成式人工智能(AIGC)迅猛发展的今天,绝大多数企业管理者已经不再纠结“要不要用AI”,而是陷入了“如何用好AI”的焦虑。 为了快速帮员工补课,很多企业选择采购外部的AI内训服务。然而,目前的AI培训市场鱼…

2026/7/23 18:21:30 阅读更多 →
PI E711B0088 印刷电路板

PI E711B0088 印刷电路板

PI E711B0088 印刷电路板是 Physik Instrumente(PI)公司为精密运动控制设备配套设计的核心电子部件,承担着信号传输与功能模块连接的基础任务。产品特点(中间15条)专为 PI 精密定位与运动控制系统配套设计。采用高品质…

2026/7/23 18:21:30 阅读更多 →
【数据集】中国“千兆城市”关键指标数据(2021-2023年)

【数据集】中国“千兆城市”关键指标数据(2021-2023年)

“千兆城市”并不是单纯依据城市是否开通千兆宽带认定,而是由工业和信息化部从千兆光网、5G网络、用户发展、应用创新和政策保障等方面进行综合评价 工信部于2021年正式启动千兆城市总结评估工作,2021年首批认定29个,2022年累计达到110个&am…

2026/7/23 18:21:30 阅读更多 →
移动大内网 OpenWrt 软路由 IPV6设置

移动大内网 OpenWrt 软路由 IPV6设置

本例用的是 esir 大神的固件,版本是高大全 OpenWrt R21.8.6 GDQ v9.1[2021] 背景: 因为宽带是中国移动,光猫已改为桥接,通过软路由拨号,获取的IPv4是一个内网地址,没有公网的动态IP,打电话到移…

2026/7/23 18:21:29 阅读更多 →
出差拜访客户攒了好几份录音 2026百度音频转文字免费版够用吗

出差拜访客户攒了好几份录音 2026百度音频转文字免费版够用吗

先回答用户真正关心的问题 根据我2025年底对2026版本的试用,结论很明确:如果你只需要转单条1小时以内、音质清晰、普通话标准的客户拜访录音,只要纯文字,百度音频转文字免费版够用。但如果你出差攒了好几份长录音,要提…

2026/7/23 18:20:29 阅读更多 →

日新闻

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:25 阅读更多 →
AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

更多请点击: https://codechina.net 第一章:AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析 在对2,346篇跨行业AI生成文案的A/B测试数据进行聚类分析后,我们发现&#xff1…

2026/7/23 0:01:26 阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:01:26 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 19:43:43 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 17:49:47 阅读更多 →

月新闻