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

sleep () 方法

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

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

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

wait () 方法

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

总结

  • sleep () 用于线程休眠,不释放锁,适用于模拟等待或控制线程执行速度。
  • wait () 用于线程间的协调和通信,会释放锁,只能在同步块或同步方法中使用。
相关推荐
程序员黑豆2 小时前
Java类型推断完全指南:从var到菱形运算符,掌握使用限制与最佳实践
java·前端·ai编程
风流 少年2 小时前
Spring AI 2.0:Memory
java·后端·spring
码匠许师傅3 小时前
【C++ 面试真题】聊聊 C++ 的移动语义与右值引用
java·c++·面试
小席是个热心肠3 小时前
AI相关的自我学习
java·人工智能·学习
数智化管理手记6 小时前
海量数据如何沉淀有效数据资产?数据标准化治理方案如何搭建?
java·大数据·人工智能
cfm_29146 小时前
SpringAI + Ollama 本地大模型
java·开发语言·人工智能·语言模型
鲸采云SRM采购管理系统7 小时前
采购管理系统哪家好?2026最新测评对比
java·服务器·数据库
0x538 小时前
Java网络编程(二)
java·服务器·网络
Flittly8 小时前
【雕虫大技】Agent 动态 Skill 供应链安全加固(三):输出校验与治理闭环实战
java·spring boot·spring
Poo_Chai8 小时前
QT emit信号后完整处理流程,包括槽函数响应流程
java·开发语言·数据库