sleep () 和 wait () 的区别

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

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

不同点:

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

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

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

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

相关文章
|
3月前
sleep()和wait()的区别
(1)wait()是Object的方法,sleep()是Thread类的方法 (2)wait()会释放锁,sleep()不会释放锁 (3)wait()要在同步方法或者同步代码块中执行,sleep()没有限制 (4)wait()要调用notify()或notifyall()唤醒,sleep()自动唤醒
32 5
|
9月前
|
Java
在多线程中sleep()和wait()的区别(详细)
在多线程中sleep()和wait()的区别(详细)
|
监控
Sleep()和wait()方法的区别
Sleep()和wait()方法的区别
157 0
|
Java 程序员
sleep 和 wait 的区别
Java 中,线程的 "sleep" 和 "wait" 方法区别
144 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 中间件
Thread.sleep(0)的作用
在源码中经常能看到sleep(0)的操作,今天来总结下sleep(0)的作用到底是啥
463 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需要(不指定时间需要被别人中断)。 下面我们就根据这四个区别来分析。
314 0
java多线程中sleep和wait的4个区别,你知道几个?
线程 - wait & sleep 区别
线程 - wait & sleep 区别
130 0