2020-09-15:java里的wait()和sleep()的区别有哪些?
福哥答案2020-09-15:#福大大架构师每日一题#
1.线程状态。wait()的线程状态是TimedWaiting和Waiting。sleep()的线程状态是Waiting。
2.指定时间。wait()可以指定时间也可以不指定时间。sleep()必须指定时间。
3.释放锁。wait()释放锁并且加入等待队列,常用于线程间交互。sleep()不会释放锁,常用于暂停执行。
4.同步块。wait()需要在同步块里使用,否则抛出IllegalMonitorStateException异常。sleep()不需要。
5.所在类。wait()是Object里的方法。sleep是Thread里的静态方法。
6.唤醒。wait()需要被唤醒(不指定时间需要被别人唤醒),notify()、notifyAll()、interrupt()。sleep()不需要被唤醒(休眠之后退出阻塞),时间到或者interrupt()。
7.捕获异常。wait()没指定时间不需要捕获异常,指定了时间需要捕获异常。sleep()需要捕获异常。
***
[评论](https://user.qzone.qq.com/3182319461/blog/1600124842)
公众号:福大大架构师每日一题
分类:
福大大架构师每日一题
标签:
java
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具