Java进阶篇——线程通信

0.前言

推荐新手先阅读基础篇

http://t.csdnimg.cn/Xrq8a

1.前提条件

线程同步是线程通信的前提

线程同步常用方法:sychronized关键字,Lock接口 

2.两种线程通信方式

2.1定义

Monitor——同步监视器,对象可以是任何类型,因此定义在Object类

Condition——Lock对象创建,并依赖于Lock

2.2通信方法

Monitor

wt():线程通过Monitor调用此方法,释放锁并等待

notify():唤醒一个等待的线程

notifyAll():唤醒所有等待的线程

Condition:

awt():线程通过Monitor调用此方法,释放锁并等待

signal():唤醒一个等待的线程

signalAll():唤醒所有等待的线程

2.3实现原理/机制

线程同步是基于同步队列实现的

而线程通信是基于等待队列实现的

当调用等待方法时,线程->等待队列   ;当调用通知方法时,等待队列线程->同步队列

线程通信中等待队列的区别

synchronized只有一个Monitor,所以它就只有一个等待队列

Lock对象可以创建出多个Condition,所以它拥有多个等待队列。

多个等待队列更灵活性,Condition的通信方式更为推荐

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

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

相关文章

深入探讨VIVE OpenXR:为Unity开发者的全面指南

随着虚拟现实(VR)和增强现实(AR)技术的迅速发展,开发者们对于能够简化和优化沉浸式应用开发的工具需求日益增长。HTC Vive 作为行业内的领先品牌,其最新推出的 VIVE OpenXR 插件为Unity开发者提供了一个强大…

PowerShell 安装、升级、禁止升级检查

文章目录 下载安装Zip安装Msi安装 升级禁止升级检查 下载 Powershell安装指南,提供了多种安装路径,推荐zip方式,简单快捷。 因从官网下载msi或者zip非常慢,推荐从某个开源镜像站下载powershell的安装包,msi或者zip&am…

明日周刊-第6期

最近一周杭州的天气起起伏伏,下雨就凉,不下雨就热。但是夏天的感觉确实是越来越浓烈了,又是一年夏,在这个夏天大家都有什么新的计划呢。 文章目录 一周热点资源分享言论歌曲推荐 一周热点 一、我国自主研发科技壮举震惊全球航天界…

swagger文档无法访问

1. 报错异常 Unable to render this definition The provided definition does not specify a valid version field. Please indicate a valid Swagger or OpenAPI version field. Supported version fields are swagger: "2.0" and those that match openapi: 3.0…

Web前端 JavaScript笔记4

1、元素内容 属性名称说明元素名.innerText输出一个字符串,设置或返回元素中的内容,不识别html标签元素名.innerHTML输出一个字符串,设置或返回元素中的内容,识别html标签元素名.textContent设置或返回指定节点的文本内容&#x…

2023年图灵奖揭晓,你怎么看?

2023年图灵奖揭晓,你怎么看? 2023年图灵奖,最近刚刚颁给普林斯顿数学教授 Avi Wigderson!作为理论计算机科学领域的领军人物,他对于理解计算中的随机性和伪随机性的作用,作出了开创性贡献。 提醒&#xff…

LeetCode hot100-27

21. 合并两个有序链表将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 这题虽然也做出来了,但是做得不好,用了额外的新节点去组成新的链表。其实直接改变原有链表的指向就行了,不用开那么多…

贝叶斯公式中的先验概率、后验概率、似然概率

欢迎关注博主 Mindtechnist 或加入【智能科技社区】一起学习和分享Linux、C、C、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和技术。关…

Unity - ScrollView被内部的IDragHandler等接口对象阻挡滑动问题

原因&#xff1a;滑动冲突&#xff0c;内部的Image会阻挡Input 解决办法&#xff1a; 在内部的onDrag、onBeginDrag、onEndDrag内主动调用 GameObject.Find("Scroll View").GetComponent<ScrollRect>().OnBeginDrag(eventData); GameObject.Find("Scr…

Jackson 2.x 系列【24】Spring Web 集成之 Jackson2ObjectMapperBuilder

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Jackson 版本 2.17.0 源码地址&#xff1a;https://gitee.com/pearl-organization/study-jaskson-demo 文章目录 1. 前言2. Spring Web3. Jackson2ObjectMapperBuilder3.1 成员属性3.2 静态方法3…

实现名校愿望|在站博士后赴英国剑桥大学做访问学者

国内博士后若再有国外名校背景加持&#xff0c;将会提升日后高校就职的准入门槛分量。为此&#xff0c;我们为Y博士申请到世界顶尖名校-英国剑桥大学的邀请函&#xff0c;在斩获学术成果的同时&#xff0c;也为出站后进入国内高校就职积累更丰富的背景。 Y博士背景&#xff1a;…

如何在CentOS本地部署FastDFS文件系统并实现无公网IP远程上传下载内网文件

文章目录 前言1. 本地搭建FastDFS文件系统1.1 环境安装1.2 安装libfastcommon1.3 安装FastDFS1.4 配置Tracker1.5 配置Storage1.6 测试上传下载1.7 与Nginx整合1.8 安装Nginx1.9 配置Nginx 2. 局域网测试访问FastDFS3. 安装cpolar内网穿透4. 配置公网访问地址5. 固定公网地址5.…

在一台恢复测试机器上验证oracle备份有效性

一 目的 定期将生产环境oracle数据库恢复到一台测试环境数据库服务器上&#xff0c;以验证备份是否有效&#xff0c;是否能正常恢复。 二 环境 这里以恢复orcl1库为例&#xff0c;计划在orcl这个实例上进行恢复测试。 三 实验步骤 3.1 在目标端创建和源端一样的备份目录 ①…

Pygame经典游戏:贪吃蛇

------------★Pygame系列教程★------------ Pygame经典游戏&#xff1a;贪吃蛇 Pygame教程01&#xff1a;初识pygame游戏模块 Pygame教程02&#xff1a;图片的加载缩放旋转显示操作 Pygame教程03&#xff1a;文本显示字体加载transform方法 Pygame教程04&#xff1a;dra…

「 网络安全常用术语解读 」软件成分分析SCA详解:从发展背景到技术原理再到业界常用检测工具推荐

软件成分分析&#xff08;Software Composition Analysis&#xff0c;SCA&#xff09;是一种用于识别和分析软件内部组件及其关系的技术&#xff0c;旨在帮助开发人员更好地了解和管理其软件的构建过程&#xff0c;同时可帮助安全人员揭秘软件内部结构的神秘面纱。SCA技术的发展…

大厂基础面试题(之四)

Q1&#xff1a;请先进行自我介绍 Q2&#xff1a;说下你学习前端的详细过程 Q3&#xff1a;一个页面从url输入到显示页面的整个过程 1.URL解析 2.DNS解析 3.建立TCP连接 4.发起HTTP请求 5.服务器处理请求 6.返回HTTP响应 7.下载页面资源 8.解析和渲染页面 9.JavaScript执行 10…

罗芬COHERENT pmb激光电源维修HPC830

Rofin激光电源 PMB高压电源维修:HPC625,HPC520,HPC210,HPC840,HPC830,HPC810,HPC818,HPC818 HPC814 HPC910等型号。 大型设备往往都配有功能较为故障诊断程序&#xff0c;我们可以充分利用软件的提示&#xff0c;缩小故障排查范围&#xff0c;但有时诊断软件提示的受损元件是否…

微信小程序实现全局参数共享,且实现全局参数变化时的页面间通信

首先&#xff0c;微信小程序中并没有提供直接的全局事件系统来监听全局参数的变化。因此&#xff0c;我们需要采用其他方式来达到这一目的。一种常见的方法是使用全局变量和事件监听来模拟全局事件系统。 1. 定义全局变量和事件 在 app.js 中定义全局变量&#xff0c;并提供一…

[ostream_iterator]输出Fibonacci数列

描述 Fibonacci数列指的是数列第一项和第二项为1&#xff0c;之后每一项是之前两项的和所构成的数列。 现有多组数据&#xff0c;每组数据给出一个数字n&#xff0c;请你输出Fibonacci数列的前n-1项。 #include <iostream> #include <iterator> using namespace …

UE5 GAS开发P32,33 初始化状态并绑定在HUD上,拾取物品增加血量和减少蓝量

这节课主要是修改WidgetController和OverlayController,在EffectActor内新增了一个减少蓝量的代码,同时修复了一个bug,并且展示了为什么要写成单独的控制器,因为要考虑多人游戏的情况,每一个控制器都是一个单独的角色 首先修改AuraAttirbuteSet.cpp UAuraAttributeSet::UAura…