java wait 参数_Java sleep()和wait()的区别

一、什么是sleep()?

sleep()是Thread类的方法,导致线程暂停执行的时间,给其他线程执行机会,但是依然保持监控状态,过了指定时间会自动恢复执行,调用sleep()方法不会释放锁对象。

当调用sleep()方法后,当前线程进入阻塞状态。目的是让出cpu给其他线程运行的机会。但是由于sleep方法不会释放锁对象,所以在一个同步代码块中调用这个方法后,线程虽然休眠了,但其他线程无法访问他的锁对象。这是因为sleep方法拥有cpu的执行权,他可以自动醒来无需唤醒。而当sleep结束指定休眠时间后,这个线程不一定立即执行,因为此时其他线程可能正在运行。

二、什么是wait()?

wait方法是object类里的方法,当一个线程执行到wait方法时,它就进入到一个和该对象相关的线程池中,同时释放了锁对象,等待期间可以调用里面的同步方法,其他线程可以访问,等待时不拥有cpu的执行权,否则其他线程无法获取执行权。当一个线程执行了wait方法后,必须调用notify或者notifyAll方法才能唤醒,而且是随机唤醒,若是被其他线程抢到了cpu执行权,该线程会继续进入等待状态。由于锁对象可以是任意对象,所以wait方法必须定义在Object类中,因为Object类是所有类的基类。

三、总结sleep()和wait()的区别

1.sleep()是Thread类中的静态方法,wait()是Object超类中定义的成员方法,因此sleep()可以在任何地方使用,而wait()只能在同步方法或者同步代码块中使用。

2.sleep()方法必须传一个时间参数,而wait()可传可不传

3.sleep()方法导致了程序暂停执行的时间,让出cpu给其他线程,但是他的监控状态依然保持着,当指定的时间到了又会自动恢复运行状态。在调用sleep()方法的过程中,线程不会释放对象锁。

而当调用wait()方法的时候,线程会放弃对象锁,进入等待此对象的等待锁定池,只有支队此对象调用notify()方法后本线程才进入对象锁定池准备。

4.sleep()方法需要抛出异常,wait方法不需要,why?

因为Thread类中的sleep()方法就已经进行了抛异常处理。

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

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

相关文章

[html]html实现页面跳转都有哪些方法?

[html]html实现页面跳转都有哪些方法&#xff1f; 创建A标签跳转location.hrefform submit<meta http-equiv"refresh" content"5;urlother.html">window.history个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c…

如何设置Hyper-V的虚拟机快捷方式

在Windows Server 2008中&#xff0c;提供的Hyper-V功能&#xff0c;可以很方便地在企业环境中部署多个虚拟机&#xff0c;以适应不同的开发需要。一般我们都是通过下面的方式 1. 打开服务器管理器 2.打开Hyper-V管理器&#xff0c;找到有关的虚拟机&#xff0c;然后右键点击“…

使用 keytool 生成安卓应用程序签名

下载 keytool jar包&#xff1b; 解压jar包到固定目录 如&#xff1a; cd /Library/Java/JavaVirtualMachines/ 进入到jar包目录: cd /Library/Java/JavaVirtualMachines/jdk-12.0.1.jdk/Contents/Home 输入keytool&#xff0c;可以查看各种命令。 执行&#xff1a; keytool -…

java 音频对比_java – 比较两个不同的音频文件不起作用

我想比较两个音频文件,例如mp3和wav.我使用musicg来比较指纹.Wave record1 new Wave(music1.toString());Wave record2 new Wave(music2.toString());FingerprintSimilarity Similarityrecord1.getFingerprintSimilarity(record2);System.out.println(Similarity.getSimilari…

[html] 如何在页面引用外部的html页面?

[html] 如何在页面引用外部的html页面&#xff1f; 1.是完整的页面。拥有header&#xff0c;body。使用<iframe> 2.是一个页面片段。使用get请求。或者使用<link ref"import" href"some.html">个人简介 我是歌谣&#xff0c;欢迎和大家一起交…

解析C#中is和as操作符的用法 two

c# 中 is和as 操作符是用来进行强制类型转换的 is : 检查一个对象是否兼容于其他指定的类型,并返回一个Bool值,永远不会抛出异常 objecto newobject(); if(o isLabel) { Label lb (Label)o; Response.Write("类型转换成功"); } else{ …

java跨函数跳转_VS code 函数无法跨文件跳转到定义

现状&#xff1a;本文件函数通过this打点调用的函数&#xff0c;引入绝对路径的文件&#xff0c;调用的函数都可以通过Ctrl 点击 实现跳转到定义处。而如果在 webpack 通过alias 设置了别名&#xff0c;无法跳转成功。解决方案: 新建文件 jsconfig.json&#xff0c;配置如下。…

uname命令

uname命令用于打印当前系统相关信息&#xff08;内核版本号、硬件架构、主机名称和操作系统类型等&#xff09;。 语法 uname(选项) 选项 -a或--all&#xff1a;显示全部的信息&#xff1b; -m或--machine&#xff1a;显示电脑类型&#xff1b; -n或-nodename&#xff1a;显示在…

std::map用法总结

给出了map的基本用法如插入、查找、删除、遍历等等&#xff0c;同时告诉你如何实现双键map&#xff0c;包括 (1) 只有两个键都匹配才命中目标(2) 两个键中任意一个匹配就命中目标 可以扩展到多键(一) 介绍特点&#xff1a;1.map将Key的object和T的Object绑定到一起&#xff0c;…

题库 java_java题库

1.public class T {int squares81;public static void main(String[] args) {new T().go();}void go(){incr(squares);System.out.println(squares);}void incr(int squares){squares10;}返回值为82&#xff0c;没有改变squares的值&#xff0c;不是引用传递不是c2.建个test类 …

Javascript弹出div层

这是一个DIV弹窗效果!将鼠标移动到此 点击这里查看弹出窗口 这是文章“JavaScript弹出窗口DIV层效果代码”的演示页面&#xff0c;点这里查看原文&#xff01; 转载于:https://www.cnblogs.com/xxxxx/archive/2010/05/22/1741707.html

java什么是同步_什么是同步?什么是互斥?

现代操作系统基本都是多任务操作系统&#xff0c;即同时有大量可调度实体在运行。在多任务操作系统中&#xff0c;同时运行的多个任务可能&#xff1a;都需要访问/使用同一种资源 多个任务之间有依赖关系&#xff0c;某个任务的运行依赖于另一个任务 这两种情形是多任务编程中遇…

python enumerate()

描述 enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列&#xff0c;同时列出数据和数据下标&#xff0c;一般用在 for 循环当中。 语法 以下是 enumerate() 方法的语法: enumerate(sequence, [start0]) 参数 sequence -- 一个序列、迭代器…

java做报表_一步一步使用POI做java报表

读取和重写 WorkbooksPOIFSFileSystem fs new POIFSFileSystem(new FileInputStream("workbook.xls"));HSSFWorkbook wb new HSSFWorkbook(fs);HSSFSheet sheet wb.getSheetAt(0);HSSFRow row sheet.getRow(2);HSSFCell cell row.getCell((short)3);if (cell nu…

为考试而准备1——无线WCDMA 网规精选(04年)

2010年的网优注定将与大大小小的考试紧密相联&#xff0c;而考试的侧重方面于3G为主。 一、填空题 1. BSC6800可以提供单机柜解决方案&#xff0c;单机柜可以支持 3200 等效语音信道&#xff0c;支持6万 等效语音用户。BSC6800每块WFMR板处理 16 个载频扇区&#xff0c;每个载频…

SQL的数据定义功能及语句:

定义各种数据库的“对象” 模式定义表定义视图定义索引定义SQL的数据定义语句 操作对象操作方式创建删除修改 模式CREATE SCHEMADROP SCHEMA 表CREATE TABLEDROP TABLEALTEB TABLE 视图CREATE VIEWDROP VIEW 索引CREATE INDEXDROP INDEXALTEB INDEX 转载于:https://www.cnbl…