sleep () 和 wait () 的区别

简介: sleep () 和 wait () 的区别

两个都是让程序暂停的方法,都可以指定暂停时间。

不同点:

1.sleep()属于 Thread 类,wait()属于 Object 类定义的方法

2.sleep()方法可以在程序任何地方使用,而 wait()方法只能在 synchronized 方法或 synchronized 块中使用。

3.Thread.sleep()方法睡眠时只会让出 CPU,不会释放锁,时间到自动恢复运行状态;

Object.wait()方法不仅让出 CPU,而且还会释放已占用的同步资源锁,被唤醒后(notify()方法)再次进入对象锁的争夺队列中,这也是为什么 wait()方法只能在 synchronized 中使用的原因,(因为要释放锁,所以必须要先获得锁)。

相关文章
|
27天前
sleep()和wait()的区别
(1)wait()是Object的方法,sleep()是Thread类的方法 (2)wait()会释放锁,sleep()不会释放锁 (3)wait()要在同步方法或者同步代码块中执行,sleep()没有限制 (4)wait()要调用notify()或notifyall()唤醒,sleep()自动唤醒
21 5
|
7月前
|
Java
在多线程中sleep()和wait()的区别(详细)
在多线程中sleep()和wait()的区别(详细)
|
监控
Sleep()和wait()方法的区别
Sleep()和wait()方法的区别
139 0
|
Java 程序员
sleep 和 wait 的区别
Java 中,线程的 "sleep" 和 "wait" 方法区别
134 0
|
Java
java多线程中sleep和wait的4个区别,你知道几个?
sleep和wait的区别是面试中一个非常常见的问题,因为从表象来看,好像sleep和wait都能使线程处于阻塞状态,但是却有着本质上的却别。这篇文章就来好好分析一下。 整体的区别其实是有四个: 1、sleep是线程中的方法,但是wait是Object中的方法。 2、sleep方法不会释放lock,但是wait会释放,而且会加入到等待队列中。 3、sleep方法不依赖于同步器synchronized,但是wait需要依赖synchronized关键字。 4、sleep不需要被唤醒(休眠之后推出阻塞),但是wait需要(不指定时间需要被别人中断)。 下面我们就根据这四个区别来分析。
302 0
java多线程中sleep和wait的4个区别,你知道几个?
|
监控
实践解读CLOSE_WAIT和TIME_WAIT
实践解读CLOSE_WAIT和TIME_WAIT
408 0
实践解读CLOSE_WAIT和TIME_WAIT
线程 - wait & sleep 区别
线程 - wait & sleep 区别
122 0
|
Java
sleep与wait区别
第一个区别是在对系统资源的占用上。 wait是Object类的一个函数(也就意味着所有对象都有这个函数),指线程处于进入等待状态,此时线程不占用任何资源,不增加时间限制。wait可以被notify和notifyAll函数唤醒(当然这两个同时也是Object的函数)。 而sleep则是Thread类的一个函数,指线程被调用时,占着CPU不工作。此时,系统的CPU部分资源被占用,其他线程无法进入,会增加时间限制。
149 0
|
监控
sleep 与 wait 区别
sleep 与 wait 区别
120 0

热门文章

最新文章