Java 中sleep()与wait()的区别

目录

    • 一、原理不同
    • 二、锁的处理机制不同
    • 三、使用的区域不同
    • 四、异常捕获不同
    • 五、总结

一、原理不同


  • sleep()是Thread类的静态方法,是线程用来控制自身流程的,它会使此线程暂停执行指定的时间,而把执行机会让给其他的线程,等到计时时间到,此线程会自动苏醒。

  • wait()是Object类的方法,用于线程间的通信,这个方法会使当前拥有该对象锁的进程等待,直到其他线程调用notify()方法才醒来,也可以指定时间自己醒来。


二、锁的处理机制不同


  • sleep()方法的主要作用是让线程休眠指定一段时间,在时间到时自动恢复,不涉及线程间的通信,因此,调用sleep()方法并不会释放掉锁

  • 调用wait()方法的时候,线程会释放掉它所占用的锁,从而使线程所在对象中的其他synchronized数据可以被其他线程使用。


三、使用的区域不同


  • sleep()方法则可以放在任何地方使用。

  • wait()必须放在同步控制方法或者同步语句块中使用。


四、异常捕获不同


  • sleep()方法必须捕获异常,在sleep()的过程中,有可能别的其他对象调用其interrupt(),产生InterruptedException异常。

  • wait(),notify()以及notifyall()不需要捕获异常。


五、总结


sleep()不会释放锁标志,容易导致死锁的发生,所以一般情况下,不推荐使用sleep方法,而是使用wait方法。

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

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

相关文章

android--地图定位打卡

获取位置信息 1)位置信息 GPS卫星定位,在室外适用 基站(3个基站交叉,锁定手机位置)–基站定位不平均,有些地方实现不了3点定位 网络定位–通过手机IP地址,去锁定位置(消耗流量,对网络有要求) 谷歌地图的大致实现思路(通用) 2)实现定位功能的重要类 在百度地图和高德地图中不…

Android 将整形颜色值转换成String类型

转换方法: val hexColor String.format("#%06X", [0xFFFFFF or intColor]);转换结果: #F2EADA

MacOS 的 zsh 和 bash 切换

目录一、从 bash 切换到 zsh1、使用系统自带的 zsh2、使用第三方的 zsh2.1、Clone代码到本地2.2、备份你已存在的 ~/.zshrc 文件2.3、新建一份新的 zsh 配置文件2.4、改变默认的shell脚本二、从 zsh 切换回 bash三、zsh 和 bash 的环境变量zsh、bash 都是shell,zsh …

android--在命令行中生成Android的数字证书keystore文件

标题 生成 密钥口令为 13458977480 密钥库口令为 13458977480 存放位置 查看证书的相关资料

linux查看系统日志

cd /var/log/gscubuntu:/var/log$ tail -f syslog

IDEA 创建 SpringBoot 项目

目录一、新建Springboot项目第一步:新建一个Springboot项目第二步:选择项目模板第三步:设置项目配置第四步:设置项目依赖第五步:设置项目名称及路径第六步:创建完成二、测试及运行1、测试代码2、设置默认端…

VC++软件

一个main fatal error LNK1169: 找到一个或多个多重定义的符号–报错 一个项目即一个程序&#xff0c;多个文件只能有一个main函数 删除掉多余的main 控制台按enter键闪退 在代码中加上 #include<stdlib.h> getchar();//让控制台停留 system("pause");//让…

IDEA 将 SpringBoot 项目打包成jar

目录一、打包配置1、File -> Project Structure2、Project Structure3、设置启动类及META-INF4、设置打包输出目录二、打包1、Build -> Artifacts2、Build三、查看打包文件四、运行新建SpringBoot项目&#xff1a;IDEA 创建 SpringBoot 项目 一、打包配置 1、File -> …

2014年考研英语一完型填空知识点

单词 单词释意commitv犯罪sufficientlyadv足够gainfuladj有收益的socioeconomicadj社会经济的discontentn/v不满意householdn家庭supervisionn监督offensiveadj冒犯的conditionn状态casualadj随意的causaladj因果关系的establishedadj已确立,公认的interactionn相互作用或影响…

如何查看软连接,以及相关注意事项

使用命令 ls -il 图片显示 参考链接 Linux 命令之软连接详解Linux软连接 查看/创建/删除

Git SSH key配置

一、检查本地Git配置 用如下命令&#xff08;如未特别说明&#xff0c;所有命令均默认在Git Bash工具下执行&#xff09;检查一下用户名和邮箱是否配置&#xff08;github支持我们用用户名或邮箱登录&#xff09;&#xff1a; git config --global --list 显示信息如下&#…

2014年英语一阅读理解Text1

单词解释chancellorn总理upfrontadj坦率的eligibleadj有资格的,合格的fortnightlyadv两星期一次的sign on办理reformn改革subsidisev补助zealn热情taxpayern纳税人claimantn(因失业)领取救济金者skip down边跳边走prospectn前景psychologicallyadv心理上地excludev不包括crucia…

HTTPS 工作原理

一、简介 HTTPS对于客户端开发人员来说并没有什么需要特别注意的地方&#xff0c;因为代码和写HTTP请求时并没有什么两样。但也正是因为这个原因&#xff0c;导致许多客户端开发人员对HTTPS并不了解&#xff0c;只知道它是安全的加密网络传输&#xff0c;对其具体的工作原理却一…

解决VM虚拟机中ubuntu系统上不了网的问题

最简单的方式 关闭虚拟机在对应的虚拟机上右键&#xff0c;点击设置&#xff0c;找到网络适配器&#xff0c;点击移除&#xff0c;再次点击添加&#xff0c;将网络适配器再次添加回来&#xff0c;点击确定重启虚拟机如果第一种方式解决不了问题&#xff0c;请使用第二种方式 …

Android Glide图片加载框架(一)基本用法

文章目录一、前言二、简介三、基本用法第一步&#xff1a;调用 Glide.with() 方法创建加载图片的实例第二步&#xff1a;调用 load() 方法指定待加载的图片资源第三步&#xff1a;调用 into() 方法绑定显示控件总结四、扩展用法1、占位图2、指定图片格式3、指定图片大小Android…

codeforces71A-C语言解题报告

71A题目地址 题目解答 1.输入单词 超过10个字母的单词,输出第一个字母中间个数最后一个字母 没有超过的,直接输出 2.循环读取输入 在for循环内部,接收用户输入的单词 知识点 1.接收用户输入 int a; scanf("%d",&a); 2.字符串数组 C语言中没有专门的字符串数组…

操作系统 进程 学习以及思考

进程管理逻辑图 将多个程序拷贝到进程中&#xff0c;占用内存&#xff0c;如图扇形区域&#xff0c;当酷狗进程需要资源的时候&#xff0c;会通过I/O子系统取用资源的过程中&#xff0c;会放弃对cpu的占用&#xff0c;cpu就会处理别的进程&#xff0c;因此提高了cpu的利用率&am…

Android Glide图片加载框架(二)源码解析之with()

文章目录一、前言二、如何阅读源码三、源码解析1、with()Android Glide图片加载框架系列文章 Android Glide图片加载框架&#xff08;一&#xff09;基本用法 Android Glide图片加载框架&#xff08;二&#xff09;源码解析之with() Android Glide图片加载框架&#xff08;二…

codeforces 1A-C语言解题报告

1A题目网址 题目解析 1.使用axa面积的方块去铺满n*m面积的广场,方块之间可以覆盖,可以比广场面积大,求最小使用的方块数目 2.因为可以覆盖,所以求取每一边(n或m)能够铺多少的a,即为求取n/a向上取整,up(n/a)(na-1)/a,再把它们乘起来 number((na-1)/a)*((ma-1)/a); 3.因为有很…