【你问我答】sleep()和wait()有什么区别?

问题描述:

sleep()和wait()有什么区别?

回答有奖:

选取一位认真回答问题的牛友,赠送200牛币!
▶回答尽量有自己的思考,不要单纯的只是复制粘贴定理定义,或者他人blog哦~

你问我答问题汇总:点击进入
关注你问我答栏目:点击关注

你问我答 - 答问题,成大佬,拿牛币!
你问我答是牛客新栏目,每周1期几个面试中真实遇到的问题,
牛友在问题贴下留下自己的知识,经验与见解,
帮助更多牛友了解更多技术相关知识!

#悬赏##Java工程师##面试题目#
全部评论
1、这两个方法来自不同的类分别是Thread和Object,sleep方法属于Thread类中的静态方法,wait属于Object的成员方法。 2、最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制方法或者同步控制块。 3、wait方法只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用。 4、sleep方法可以用时间指定来使他自动醒过来,如果时间不到你只能调用interreput()来强行打断 ,wait方法可以用notify或者notifyAll直接唤起
1 回复 分享
发布于 2020-04-14 12:49
1.相同点:一旦执行方法,都可以使得当前的线程进入阻塞状态。 2.不同点: - 1)两个方法声明的位置不同:Thread类中声明sleep() , Object类中声明wait() - 2)调用的要求不同:sleep()可以在任何需要的场景下调用。 wait()必须使用在同步代码块或同步方法中 - 3)关于是否释放同步监视器:如果两个方法都使用在同步代码块或同步方法中,sleep()不会释放锁,wait()会释放锁。
1 回复 分享
发布于 2020-04-14 12:44
1、这两个方法来自不同的类分别是Thread和Object,sleep方法属于Thread类中的静态方法,wait属于Object的成员方法。 2、最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。 3、wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用(使用范围)。 sleep方法属于Thread类中方法,表示让一个线程进入睡眠状态,等待一定的时间之后,自动醒来进入到可运行状态,不会马上进入运行状态,因为线程调度机制恢复线程的运行也需要时间,一个线程对象调用了sleep方法之后,并不会释放他所持有的所有对象锁,所以也就不会影响其他进程对象的运行。但在sleep的过程中有可能被其他对象调用它的interrupt(),产生InterruptedException异常,如果你的程序不捕获这个异常,线程就会异常终止,进入TERMINATED结束状态,如果你的程序捕获了这个异常,那么程序就会继续执行catch语句块(可能还有finally语句块)以及以后的代码。 wait属于Object的成员方法,一旦一个对象调用了wait方法,必须要采用notify()和notifyAll()方法唤醒该线程;如果线程拥有某个或某些对象的同步锁,那么在调用了wait()后,这个线程就会释放它持有的所有同步资源,而不限于这个被调用了wait()方法的对象。wait()方法也同样会在wait的过程中有可能被其他对象调用interrupt()方法而产生InterruptedException,效果以及处理方式同sleep()方法.
3 回复 分享
发布于 2020-04-16 08:40
-sleep方法:是Thread类中的方法,让线程暂停执行,释放cpu给其他线程,不释放锁,设置时间唤醒。如,sleep(1000)等待超过1s被唤醒 -wait方法:是Object类中的方法,释放cpu给其他线程,同时释放锁资源。wait(1000)等待超过1s被唤醒。wait()一直等待需要通过notify或者notifyAll进行唤醒。wait方法必须配合synchronized一直使用,不然在运行时就会抛出IllegalMonitorStateException异常
点赞 回复 分享
发布于 2024-03-09 19:25 北京
区别: 1.sleep()使用时没有释放锁,wait()释放了锁 2.sleep()可以在不同步的代码块中使用,wait()必须在同步的代码块使用 3.sleep()必须设置过期时间,wait()不一定;并且wait()可以用notify()/notifyAll()唤醒 应用场景:sleep()常用于暂停,wait()常用于设定线程间的顺序
点赞 回复 分享
发布于 2020-04-14 11:55

相关推荐

菠落蜜:这个是系统自动投的,不是hr主动打招呼。更抽象的还有ai回复
我的秋招日记
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务