wait()和sleep()的区别

此生辽阔 2021-01-27 05:31:32
1:来自不同的类
wait()来自Object类,sleep()来自Thread类

2 关于锁的释放
wait()会释放锁,sleep()不会释放锁,可以理解为抱着锁睡觉

3使用范围不同
==sleep()可以在任何地方使用,wait()只能在同步代码块中使用==

4是否需要捕获异常
wait()不需要捕获异常
sleep()必须要捕获异常
...全文
168 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
KeepSayingNo 2021-01-28
  • 打赏
  • 举报
回复
hamish-wu 2021-01-27
  • 打赏
  • 举报
回复
wait()、notify()、notifyAll(); 搭配使用,wait() 是获取使用必修是对象拿到 对象头Monitor的情况,所以wait()经常和synchronized 一起出现。 wait 是object 提供方法,所以在多线程编程的时候 搞清楚是哪个Object 在wait(),这个object 应该和synchronized 的对象是同一个。 sleep()是线程暂停,不会释放锁,但会释放计算资源。之前一道经典的让cpu 占用率打印出正弦函数就是通过sleep()实现。 wait 和 sleep 使用不当都会有对应异常出现。 建议研究一下 java 对象头

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧