sleep()、wait()、 join()、 yield()的区别

news2025/5/25 17:36:51

在这之前,需要明白锁池和等待池的含义

1.锁池

所有需要竞争同步锁的线程都会放在锁池当中,比如当前对象的锁已经被其中一个线程得到,则其他线程需要在这个锁池进行等待,当前面的线程释放同步锁后锁池中的线程去竞争同步锁,当某个线程得到后会进入就绪队列进行等待cpu资源分配。

⒉.等待池

当我们调用wait ()方法后,线程会放到等待池当中,等待池的线程是不会去竞争同步锁。只有调用了notify ()或notifyAll()后等待池的线程才会开始去竞争锁,notify ()是随机从等待池选出一个线程放到锁池,而notifyAll()是将等待池的所有线程放到锁池当中

3.sleep和wait区别

1、 sleep是 Thread类的静态本地方法,wait则是 Object类的本地方法。
2、 sleep方法不会释放lock,但是wait会释放,而且会加入到等待队列中。

sleep就是把cpu的执行资格和执行权释放出去,不再运行此线程,
当定时时间结束再取回cpu资源,参与cpu的调度,获取到cpu资源后就可以继续运行了。
而如果sleep时该线程有锁,那么s1eep不会释放这个锁,而是把锁带着进入了冻结
状态,也就是说其他需要这个锁的线程根本不可能获取到这个锁。也就是说无法执行
程序。如果在睡眠期间其他线程调用了这个线程的interrupt方法,那么这个线程
也会抛出interruptexception异常返回,这点和wait是一样的。

3、sleep方法不依赖于同步器synchronized,但是wait需要依赖synchronized关键字。
4、sleep不需要被唤醒(休眠之后推出阻塞),但是wait需要(不指定时间需要被别人中断)。
5、 sleep一般用于当前线程休眠,或者轮循暂停操作,wait则多用于多线程之间的通信。
6、sleep 会让出CPU执行时间且强制上下文切换,而wait则不一定,wait后可能还是有机会重新竞争到锁继续执行的。

4.yield()和join()的区别

yield ():

执行后线程直接进入就绪状态,马上释放了cpu的执行权,但是依然保留了cpu的执行资格,所以有可能cpu下次进行线程调度还会让这个线程获取到执行权继续执行.

join ():

执行后线程进入阻塞状态,例如在线程B中调用线程A的join (),那线程B会进入到阻塞队列,直到线程A结束或中断线程
在这里插入图片描述

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

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

相关文章

ThreadLocal 源码级别详解

ThreadLocal简介 稍微翻译一下: ThreadLocal提供线程局部变量。这些变量与正常的变量不同,因为每一个线程在访问ThreadLocal实例的时候(通过其get或set方法)都有自己的、独立初始化的变量副本。ThreadLocal实例通常是类中的私有静…

excel拆分实例:如何快速制作考勤统计分析表

面对新的统计需求,很多人会一下变懵,不知如何办。如果涉及的统计有一千多行数据,哭的心思都有了:什么时候才能下班哟!今天老菜鸟通过考勤统计分析表实例分享自己面对新统计需求的解决方法:简化数据、找数据…

【表面缺陷检测】基于YOLOX的PCB表面缺陷检测(全网最详细的YOLOX保姆级教程)

写在前面: 首先感谢兄弟们的订阅,让我有创作的动力,在创作过程我会尽最大能力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌。 Hello,大家好,我是augustqi。 今天给大家分享一个表面缺陷检测项目:基于YOLOX的PCB表面缺陷检测(保姆级教程)。多的…

用于异常检测的深度神经网络模型融合

用于异常检测的深度神经网络模型融合 在当今的数字时代,网络安全至关重要,因为全球数十亿台计算机通过网络连接。近年来,网络攻击的数量大幅增加。因此,网络威胁检测旨在通过观察一段时间内的流量数据来检测这些攻击,…

主流无线音频传输方案

一、概述 无线音频传输很大程度上解决了音影设备布线难的问题,特别是大型的场合。科技的进步,用户对无线传输的要求越来越高,一发对多收的无线音频方案将成为主流。 二、方案分类 无线传输方案,从目前来说方案的种类还是很多的&am…

线材分享丨同为(TOWE)IEC 60320国际标准制式电源转换延长线

电源线的作用是传输电流,其传输方式通常是点对点传输,在生活中我们随处可见它的身影。电源线按照用途可以分为AC交流电源线及DC直流电源线,而AC电源线有着高需要统一标准获得安全认证,如国标CCC认证机构、美国UL认证机构、欧洲VDE…

Java笔记-异常相关

一、异常概述与异常体系结构 Error:Java虚拟机无法解决的严重问题: JVM系统内部错误,资源耗尽,如:StackOverflow \OOM堆栈溢出 处理办法:只能修改代码,不能编写处理异常的代码 Exception:可以处理的异常 &…

docker安装青龙面板薅羊毛(新手教程,大佬可略过)

当然如果没有服务器的,强烈推荐腾讯云,1核2G的服务器,一年原价1000多块的服务器,现在有活动新用户一年也就70元,也就一顿外卖钱。完全白嫖啊。本博客用的就是腾讯云 1核2G的轻量服务器,速度怎么样可以自己感…

安卓小游戏:贪吃蛇

安卓小游戏:贪吃蛇 前言 这个是通过自定义View实现小游戏的第二篇,实际上第一篇做起来麻烦点,后面的基本就是照葫芦画瓢了,只要设计下游戏逻辑就行了,技术上不难,想法比较重要。 需求 贪吃蛇&#xff0…

解决:ChatGPT too many requests in 1 hour.Try again later 怎么办?OpenAI 提示

ChatGPT 提示: Too many requests in 1 hour. Try again later. 如下图,我多次访问也出现同样的问题。中文意思是太多的请求数量在当前 1 个小时内,请稍后重试。那怎么办?怎么解决? 一、问题现象 我基本试了半个小时&…

二分查找基本原理

二分查找基本原理1.二分查找1.1 基本概念1.2 二分查找查找步骤1.2.1 中间索引不能整除,取整数作为中间索引1.2.2 索引不能整除,整数1作为中间索引1.3 二分查找大O记法表示2. 二分查找代码实现1.二分查找 1.1 基本概念 二分法(折半查找)是一…

【第37天】斐波那契数列与爬楼梯 | 迭代的鼻祖,递推与记忆化

本文已收录于专栏🌸《Java入门一百例》🌸学习指引序、专栏前言一、递推与记忆化二、【例题1】1、题目描述2、解题思路3、模板代码4、代码解析5.原题链接三、【例题1】1、题目描述2.解题思路3、模板代码4、代码解析5、原题链接三、推荐专栏四、课后习题序…

数据库原理及应用基础知识点

数据库原理基础知识点大全数据库原理及应用1、数据库系统概述1.1 基本概念1.2 数据模型1.3 数据库系统的结构2、实体 -- 联系模型2.1 基本概念2.2 实体-联系图2.3 弱实体集3、关系数据模型3.1 关系数据库的结构3.2 从ER模型到关系模型3.3 关系操作、完整性约束、关系代数4、关系…

Nacos安装配置(二)

目录 一、概述 二、Nacos 安装 A)Debian11 1)软件环境 2)下载源码或者安装包 3)mysql配置 4)启动服务器 B) Debian11 1) 安装JDK 2) 安装Maven 3) 安装Nacos2 4) 修改访问参数(/conf/applicati…

GEE:下载研究区同一天的Landsat影像

本文记录了下载Landsat逐日数据的代码,包装成了函数。直接输入数据集合就可以直接使用。 并在下文中应用了该函数,以下载2022年逐日地表温度LST数据,和下载研究区多波段影像为例。 结果如图所示 文章目录 一、调用方法二、Landsat 逐日下载函数三、应用示例1——下载2022年研…

RNN循环神经网络原理理解

一、基础 正常的神经网络 一般情况下,输入层提供数据,全连接进入隐藏层,隐藏层可以是多层,层与层之间是全连接,最后输出到输出层;通过不断的调整权重参数和偏置参数实现训练的效果。深度学习的网络都是水…

【安全知识】——对Linux密码文件的处理

作者名:白昼安全主页面链接: 主页传送门创作初心: 一切为了她座右铭: 不要让时代的悲哀成为你的悲哀专研方向: web安全,后渗透技术每日emo:他既乐观又悲观,生活也一无是处昨天在挖掘…

mycat2使用

安装部署下载1:mycat2-install-template-1.21.zip下载2:mycat2-1.21-release-jar-with-dependencies.jar解压mycat2-install-template-1.21.zipunzip mycat2-install-template-1.21.zip把mycat2-1.21-release-jar-with-dependencies.jar放在mycat/lib中修…

神码ospfv3配置.docx

一.配置各设备的ip地址 sw1(config)#ipv6 enable sw1(config)#vlan 1000 sw1(config-vlan1000)#swi int eth1/0/3 Set the port Ethernet1/0/3 access vlan 1000 successfully sw1(config)#int vlan 1000 sw1(config-if-vlan1000)#ipv6 address aa::aa/64 sw1(config-if-vla…

分享微信商城小程序搭建步骤_微信公众号商城小程序怎么做

如何搭建好一个微信商城?这三个功能要会用! 1.定期低价秒杀,提高商城流量 除了通过私域流量裂变,低价秒杀是为商城引流提高打开率的良好手段。 以不同节日作为嘘头,在情人节、38妇女节、中秋国庆、七夕节等日子&…