sleep () 和 wait () 的区别

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

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

不同点:

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

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

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

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

相关文章
|
5月前
|
设计模式 Java 调度
多案例理解Object的wait,notify,notifyAll与Thread的sleep,yield,join等方法
多案例理解Object的wait,notify,notifyAll与Thread的sleep,yield,join等方法
79 1
|
5月前
|
Java
在多线程中sleep()和wait()的区别(详细)
在多线程中sleep()和wait()的区别(详细)
|
监控
Sleep()和wait()方法的区别
Sleep()和wait()方法的区别
121 0
|
Java 程序员
sleep 和 wait 的区别
Java 中,线程的 "sleep" 和 "wait" 方法区别
112 0
|
调度 C++
Thread.sleep(0) vs Thread.sleep(1) vs Thread.yield() vs Object.wait()
Thread.sleep(0) vs Thread.sleep(1) vs Thread.yield() vs Object.wait()
|
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需要(不指定时间需要被别人中断)。 下面我们就根据这四个区别来分析。
292 0
java多线程中sleep和wait的4个区别,你知道几个?
线程 - wait & sleep 区别
线程 - wait & sleep 区别
115 0
|
Java
sleep与wait区别
第一个区别是在对系统资源的占用上。 wait是Object类的一个函数(也就意味着所有对象都有这个函数),指线程处于进入等待状态,此时线程不占用任何资源,不增加时间限制。wait可以被notify和notifyAll函数唤醒(当然这两个同时也是Object的函数)。 而sleep则是Thread类的一个函数,指线程被调用时,占着CPU不工作。此时,系统的CPU部分资源被占用,其他线程无法进入,会增加时间限制。
137 0
|
监控
sleep 与 wait 区别
sleep 与 wait 区别
110 0