JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

「每天一个知识点」Java多线程sleep和wait的区别

wys521 2024-10-29 16:58:28 精选教程 24 ℃ 0 评论

点击上方"java全栈技术"关注我们,每天学习一个java相关知识点

sleep是让线程休眠,到时间后会继续执行,wait是等待,需要唤醒再继续执行,那么这两种方法在多线程中的表现形态,有什么区别?

使用上

sleep是Thread线程类的方法,而wait是Object顶级类的方法。

sleep可以在任何地方使用,而wait只能在同步方法或者同步块中使用。

CPU及资源锁释放

sleep,wait调用后都会暂停当前线程,并让出cpu的执行时间。不同的是sleep不会释放当前持有的对象的锁资源,到时间后会继续执行,而wait会放弃所有锁,并需要notify/notifyAll后重新获取到对象锁资源后才能继续执行。

异常捕获

sleep需要捕获或者抛出异常,而wait/notify/notifyAll不需要。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表