当前位置: 首页 > news >正文

Java中的wait( )和sleep( )方法的区别

一、前言

  • Java中的wait( )和sleep( )方法都用于暂停线程的操作,但两者在相关特点和使用场景却有明显的区别。

二、关键区别说明

  • 锁释放机制
    • wait()会释放对象锁;
    • 而sleep()仅让出CPU资源,不释放锁。
  • 使用场景
    • wait()用于线程间通信(如等待条件触发),常用于synchronized修饰的同步代码块;
    • sleep()用于暂停线程执行,无使用场景限制。
  • 同步要求
    • wait()必须在synchronized代码块中调用,否则将抛出IllegalMonitorStateException异常;
    • sleep()无此限制。
  • 唤醒方式
    • wait()依赖其他线程主动唤醒;
    • 而sleep()自动恢复。

三、代码示例

// wait()示例(需同步)
synchronized (lock) {
    while (conditionNotMet) {
        lock.wait(); // 释放锁并等待唤醒
    }
}

// sleep()示例
Thread.sleep(1000); // 暂停当前线程1秒,不释放锁

四、总结

在这里插入图片描述

  • 建议根据具体场景选择:需线程协作时用wait(),单纯暂停线程用sleep()。

相关文章:

  • AI大模型技术之RAG、模型微调、知识蒸馏
  • 从零搭建微服务项目Pro(第0章——微服务项目脚手架搭建)
  • 【langchain4j系列教程-05】一文读懂:人工智能如何实现会话记忆
  • 基于EfficientNet的自闭症诊断辅助系统揭秘
  • Maven工具学习使用(十)——生成项目站点
  • Python及C++中的字典
  • 【玩泰山派】5、点灯,驱动led-(2)ubuntu18.04 升级python3.6到python3.7,安装pip3
  • 20250408在荣品的PRO-RK3566开发板使用Rockchip原厂的buildroot系统时拿掉经常出现的list-iodomain.sh警告信息
  • 58-使用wordpress快速创建个人网站
  • Go小技巧易错点100例(二十六)
  • SpringBoot项目:部门管理系统
  • 防爆平板:石油化工厂智慧转型的“中枢神经”
  • BANK OF CHINA(HONG KONG)网点
  • Spring Bean 的生命周期
  • Tiny Cluster(1)——搭建树莓派小型计算集群
  • 【C++初学】C++核心编程技术详解(三):多态与文件操作
  • 重构艺术 | 如何优雅地“提炼函数“
  • 并查集(Java模板及优化点解析)
  • Java IO精讲:从传统IO到NIO的深度探索
  • Selenium之Actions事件
  • 如何做网页游戏网站/企业策划
  • 沂源网站开发/互动营销案例
  • 做web网站挣钱么/怎么优化自己公司的网站
  • 商业网站的建设/做网络推广好吗
  • seo网站怎么优化/品牌营销和市场营销的区别
  • app资源网站开发/seopeix