Java_EE 多线程技术(Thread)--2

news2024/11/26 0:44:26

线程同步的使用使用this作为线程对象锁

    

     

某一个同步块需要同时拥有“两个以上对象的锁”时,就可能会发生“死锁”的问题。比如,“化妆线程”需要同时拥有“镜子对象”、“口红对象”才能运行同步块。那么,实际运行时,“小丫的化妆线程”拥有了“镜子对象”,“大丫的化妆线程”拥有了“口红对象”,都在互相等待对方释放资源,才能化妆。这样,两个线程就形成了互相等待,无法继续运行的“死锁状态”。

    注意抛出异常:

      

      

     

   

  

消费者不能直接使用生产者的数据,它们之间有个“缓冲区”。生产者将生产好的数据放入“缓冲区”,消费者从“缓冲区”拿要处理的数据。缓冲区是实现并发的核心,缓冲区的设置有两个好处:1实现线程的并发协作有了缓冲区以后,生产者线程只需要往缓冲区里面放置数据,而不需要管消费者消费的情况;同样,消费者只需要从缓冲区拿数据处理即可,也不需要管生产者生产的情况。这样,就从逻辑上实现了“生产者线程”和“消费者线程”的分离,解除了生产者与消费者之间的耦合。2解决忙闲不均,提高效率生产者生产数据慢时,缓冲区仍有数据,不影响消费者消费;消费者处理数据慢时,生产者仍然可以继续往缓冲区里面放置数据

       

       

     

   

线程并发协作总结线程并发协作(也叫线程通信)生产者消费者模式:1生产者和消费者共享同一个资源,并且生产者和消费者之间相互依赖,互为条件。2对于生产者,没有生产产品之前,消费者要进入等待状态。而生产了产品之后,又需要马上通知消费者消费。3对于消费者,在消费之后,要通知生产者已经消费结束,需要继续生产新产品以供消费。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2208540.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

解锁健康低卡的沙拉汁,享受清爽美味!

文章目录 蜂蜜芥末沙拉汁香草酸奶沙拉汁香草酸奶沙拉红酒醋黄芥末汁油醋沙拉汁百香果沙拉汁柠檬油醋汁蜂蜜芥末沙拉汁 往密封罐里,加入芥末酱、蜂蜜、苹果醋和胡椒,然后秘诀来了:用力摇10秒让油汁充分融合乳化,可以增添这款沙拉酱浓醇的厚度和风味。 香草酸奶沙拉汁 先将…

pytest + yaml 框架 - 支持pytest-repeat插件重复执行用例

平常在做功能测试的时候,经常会遇到某个模块不稳定,偶然会出现一些bug,对于这种问题我们会针对此用例反复执行多次,最终复现出问题来。 自动化运行用例时候,也会出现偶然的bug,可以针对单个用例&#xff0…

轻催和重催的催收方式?

在催收行业中,"轻催"和"重催"的概念通常指的是催收的策略和手段的不同。 轻催:这种方法通常适用于逾期时间较短,债务人可能只是暂时遗忘或遇到了短期的流动性问题。轻催的手段包括发送提醒通知、进行友好的电话提醒等&am…

汇编语言实现字母大小写转换

程序运行后数据段内容如箭头所示 执行转换后内存内容变为: 确实进行成功转换了

基于 CSS Grid 的简易拖拉拽 Vue3 组件,从代码到NPM发布(2)- NPM发布、在线示例

这里分享一下本开源项目是如何构建组件库及其如何发布到NPM上的,还有组件库与在线示例的构建有什么差异。 请大家动动小手,给我一个免费的 Star 吧~ 大家如果发现了 Bug,欢迎来提 Issue 哟~ github源码 NPM 示例地址 版本更新信息 这两天抽空…

file-unpumper:一款针对PE文件的安全分析工具

关于file-unpumper file-unpumper是一款针对PE(可移植可执行)文件的安全分析工具,可以帮助广大研究人员轻松对PE文件执行安全分析与审计任务。 file-unpumper是一款功能强大的命令行实用程序,旨在清理和分析可移植可执行(PE)文件…

XPath网页数据提取的得力助手

使用影刀RPA操作网页元素,你会发现总会有获取不到情况,这时我们就需要使用XPath来获取了。上一篇博文抓取小说内容,我们就是使用XPath来定位元素,简单快捷。 今天我们就来简单聊聊XPath! 在当今数字化的时代&#xff…

介绍 MarsCode AI:下一代智能编程助手

在现代软件开发中,效率和代码质量的提升越来越成为开发者关注的焦点。今天,我们将介绍一款革命性的编程助手—— 豆包 MarsCode 编程助手,它由北京引力弹弓科技有限公司开发,旨在极大地提高开发流程中的各种环节,让编程…

Cuda-By-Example - 4

引入Thread概念 第4章使用GPU做并行运算的例子,归结起来就是定义一个内核函数,将数组dev_a和dev_b某一对元素相加。GPU发起N个block运行内核函数。每个block有自己的索引,这样kernel就可以凭借这个索引区分自身,来计算数组对应的…

Github 优质项目推荐(第七期):涵盖免费服务、API、低代码、安卓root、深度学习

文章目录 Github优质项目推荐 - 第七期一、【LangGPT】,5.7k stars - 让每个人都成为提示专家二、【awesome-selfhosted】,198k stars - 免费软件网络服务和 Web 应用程序列表三、【public-apis】,315k stars - 免费 API四、【JeecgBoot】&am…

如何在 cPanel 中使用 PHP-FPM

PHP性能一直是影响网站托管的一个重要问题。PHP是当前网络上使用最广泛的服务器编程语言,远远领先于其他语言。最受欢迎的内容管理系统和电子商务应用程序,如WordPress、Joomla、Drupal、Magento等,都是用PHP编写的。 PHP-FPM加速了在繁忙服务…

推荐几本编程入门书目

对于编程入门,推荐以下几本书籍,这些书籍覆盖了不同的编程语言,适合零基础的学习者逐步掌握编程基础: 1. 《Python编程快速上手——让繁琐工作自动化》 特点:以简单易懂的方式介绍了Python的基础知识和编程概念&#…

2024年四非边缘鼠鼠计算机保研回忆(记录版 碎碎念)

Hi,大家好,我是半亩花海。写下这篇博客时已然是金秋十月,心中的石头终于落地,恍惚间百感交集。对于保研这条路,我处于摸着石头过河、冲击、随缘的这些状态。计算机保研向来比其他专业难,今年形势更是艰难。…

如何做好薪酬福利体系设计,更好实现员工激励?

如何做好薪酬福利体系设计,更好实现员工激励? 中国作为福利制度建设的佼佼者,尤其在新中国成立后,员工福利体系日益丰富,涵盖了健康保障、休假权益及养老规划等多元化形式,作为间接报酬,有效激…

按模板批量生成工作表

按模板批量生成工作表,前提一个模板,然后用代码遍历循环填写人名,再保存为副本,即可达到效果 按模板批量生成工作表代码 Sub 批量生成员工表()last Sheet73.Range("C65535").End(xlUp).Row 普通区域arr Sheet73…

Redis配置篇 - 指定Redis配置的三种方式,以及Redis配置文件介绍

文章目录 1 指定Redis配置的三种方式1.1 通过命令行参数来指定Redis配置1.2 通过配置文件来指定Redis配置1.3 在服务器运行时更​​改 Redis 配置 2 关于Redis配置文件 1 指定Redis配置的三种方式 1.1 通过命令行参数来指定Redis配置 在redis启动时,可以直接通过命…

UCI-HAR数据集深度剖析:训练仿真与可视化解读

在本篇文章中,我们将深入探讨如何使用Python对UCI人类活动识别(HAR)数据集进行分割和预处理,以及运用模型网络CNN对数据集进行训练仿真和可视化解读。 一、UCI-HAR数据集分析及介绍 UCI-HAR数据集是一个公开的数据集&#xff0c…

xtu oj 彩球

样例输入# 3 7 5 3 1 2 3 1 2 3 1 6 4 3 1 2 2 3 1 3 6 2 2 1 2 3 4 5 5 样例输出# Yes Yes No 滑动窗口问题 AC代码 #include<stdio.h> #define N 10005 int main(){int T;scanf("%d",&T);while(T--){int n,m,k,i,flag1;//m个k种颜色 scanf("%d%d…

【C++入门篇 - 3】:从C到C++第二篇

文章目录 从C到C第二篇new和delete命名空间命名空间的访问 cin和coutstring的基本使用 从C到C第二篇 new和delete 在C中用来向系统申请堆区的内存空间 New的作用相当于C语言中的malloc Delete的作用相当于C语言中的free 注意&#xff1a;在C语言中&#xff0c;如果内存不够…

一台电脑轻松接入CANFD总线_来可CNA板卡介绍

在工业控制领域&#xff0c;常常使用的总线技术有CAN(FD)、RS-232、RS-485、Modbus、Profibus、Profinet、EtherCAT等。RS-485以其长距离通信能力著称&#xff0c;Modbus广泛应用于PLC等设备&#xff0c;EtherCAT则以其低延迟和高实时性在自动化系统中备受青睐。 其中&#xff…