java中sleep()和wait()区别
2024-09-01 06:07:57
1,sleep方法是Thread类的静态方法,wait()是Object超类的成员方法
2,sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。在调用sleep()方法的过程中,线程不会释放对象锁。
而当调用wait()方法的时候,线程会放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象调用notify()方法后本线程才进入对象锁定池准备
3,sleep方法需要抛异常,wait方法不需要
为什么sleep方法需要抛异常,别问我为什么,因为:
Thread类中sleep方法就已经进行了抛异常处理
public static native void sleep(long millis) throws InterruptedException;
4,sleep方法可以在任何地方使用,
wait方法只能在同步方法和同步代码块中使用
java生命周期图谱如下所示:
注意sleep方法是单线程的,没有释放锁,这个锁指的是线程锁,不是对象锁,而wait方法释放锁,这个锁是对象锁,所以sleep时间到和wait等到notify之后享受的待遇一样,都是回到就绪状态,等待系统分配cpu
————————————————
版权声明:本文为CSDN博主「掌灯夜行」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/dao_wolf/article/details/81175089
最新文章
- 禁用PHP函数,可以对php.ini进行配置
- 一些有意思的VR设备介绍
- 很久以前写的一个 ShareRestrictedSD 类
- Mybatis批量添加对象List
- SSH_框架整合1
- Java 异常 —— java.io.InvalidClassException: javax.xml.namespace.QName; local class incompatible
- sendip简单使用
- Python的高级Git库 Gittle
- 配置PostgreSQL Streaming Replication集群
- 产品经理如何赢得开发人员的尊重和支持?-摘自infoq
- CSS实现标题超出宽度省略号来表示
- jQuery 杂项方法
- %hd %d %ld %u ......
- npm err错误
- IOS传值之代理传值(一)
- Vulkan Tutorial 07 Window surface
- DevOps/TestOps概念
- ThreadLocal 原理和使用场景分析
- Linux安装gitbook
- Shell编程-控制结构 | 基础篇