Java中sleep()和wait()区别

本文阐述了Java中Thread.sleep()与someObject.wait()的区别,包括锁释放情况、使用场景和内部实现机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(1).Thread.sleep() vs someObject.wait() =>for Thread vs for Object
(2).release lock or not?=>当等待时,wait()会释放lock或者监视器,而sleep不会释放任何lock或者监视器。
/////////////begin//////
synchronized(LOCK) {
Thread.sleep(1000); // LOCK is held
}


synchronized(LOCK) {
LOCK.wait(); // LOCK is not held
/////////////end////////
(3).wakeup by self or by other thread=>sleep()时,当前线程停止指定的毫秒数后,又开始执行;而wait()时,当前线程释放lock,处于waiting状态,等待其他线程通过notify()同一对象。

>>>The major difference is to wait to release the lock or monitor while sleep doesn't release any lock or monitor while waiting. Wait is used for inter-thread communication while sleep is used to introduce pause on execution.
=>主要的不同是,当等待时,wait()会释放lock或者监视器,而sleep不会释放任何lock或者监视器。
=>wait()用于线程间通讯,而sleep()用于当前线程执行暂停。

>>>wait():Causes the current thread to wait until either another thread invokes the
java.lang.Object.notify() method or the java.lang.Object.notifyAll()method for this object, or a specified amount of time has elapsed.
>>>sleep():Causes the currently executing thread to sleep (temporarily cease execution) for the specified number of milliseconds, subject to the precision and accuracy of system timers and schedulers. The thread does not lose ownership of any monitors.
=>sleep()不会释放lock,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值