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

sleep () 方法

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

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

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

wait () 方法

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

总结

  • sleep () 用于线程休眠,不释放锁,适用于模拟等待或控制线程执行速度。
  • wait () 用于线程间的协调和通信,会释放锁,只能在同步块或同步方法中使用。
相关推荐
無a伟17 分钟前
RabbitMq高级特性:TTL,死信队列,延迟队列
java·分布式·rabbitmq
长谷深风11126 分钟前
Agent 跑了 30 分钟宕机,如何从断点继续?
java·大数据·人工智能·ai·大模型·memory·aiagent
慧都小妮子27 分钟前
DevExpress Java 文档处理 API 免费 CTP:PDF、PowerPoint、条码与跨平台部署
java·pdf·powerpoint·devexpress·文档处理·条码生成
泡海椒29 分钟前
告别反射低效:JQuick-Java ASM动态调用链性能优化实战
java·python·性能优化
土司大王39 分钟前
LeetCode 17 电话号码的字母组合:Java 回溯模板、多叉决策树与复杂度分析
java·leetcode·决策树
CoderYanger1 小时前
前端基础——JavaScript(WebAPI)代码案例
java·开发语言·前端·javascript·css·前端框架·html5
Nuanyt1 小时前
JUC常见核心知识梳理02 AQS ReentrantLock CAS 原子类 线程池
java
CodeStats1 小时前
【Java数据类型】Java底层数据类型原理(上):基本类型、转换与封装核心
java·数据类型·string·封装·转换
陈皮波比茶1 小时前
SpringCloudAlibaba
java·spring cloud·微服务
重生之小比特1 小时前
【Java SE】程序逻辑控制
java·开发语言·python