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

sleep () 方法

  • sleep () 方法是Thread类的静态方法,可以通过Thread.sleep()来调用。

  • 它是线程的一个静态方法,用于让当前线程休眠一段指定的时间。

  • sleep () 不会释放线程持有的锁,因此其他线程无法获得锁资源,可能导致同步问题。 通常用于在指定时间内暂停线程的执行,用于模拟等待或控制执行速度。

wait () 方法

  • wait() 方法是在Object类中定义的实例方法,用于线程间的协调和通信。
  • 调用wait()方法会释放当前线程持有的对象锁,并进入等待状态,直到其他线程调用相同对象的notify()或notifyAll()方法唤醒等待中的线程。
  • wait () 必须在同步块或同步方法中调用,因为它要求当前线程持有对象锁,否则会抛出IllegalMonitorStateException异常。通常用于实现线程间的通信,允许一个线程等待某个条件的满足。

总结

  • sleep () 用于线程休眠,不释放锁,适用于模拟等待或控制线程执行速度。
  • wait () 用于线程间的协调和通信,会释放锁,只能在同步块或同步方法中使用。
相关推荐
风象南3 分钟前
Spring Boot 的 3 种二级缓存落地方式
java·spring boot·后端
皮皮林55113 小时前
使用 Java + WebSocket 实现简单实时双人协同 pk 答题
java·websocket
码小凡14 小时前
优雅!用了这两款插件,我成了整个公司代码写得最规范的码农
java·后端
掉鱼的猫16 小时前
Solon AI 五步构建 RAG 服务:2025 最新 AI + 向量数据库实战
java·redis·后端
java金融16 小时前
FactoryBean 和BeanFactory的傻傻的总是分不清?
java·后端
独立开阀者_FwtCoder16 小时前
Nginx 通过匹配 Cookie 将请求定向到特定服务器
java·vue.js·后端
名曰大神16 小时前
AEM6.5集成Redis详细步骤(附代码)
java·redis·demo·aem
带刺的坐椅16 小时前
Solon AI 五步构建 RAG 服务:2025 最新 AI + 向量数据库实战
java·redis·ai·solon·rag
东阳马生架构17 小时前
商品中心—7.自研缓存框架的技术文档
java
晴空月明19 小时前
线程安全与锁机制深度解析
java