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

sleep () 方法

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

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

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

wait () 方法

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

总结

  • sleep () 用于线程休眠,不释放锁,适用于模拟等待或控制线程执行速度。
  • wait () 用于线程间的协调和通信,会释放锁,只能在同步块或同步方法中使用。
相关推荐
渣哥2 分钟前
Java CyclicBarrier 详解:原理、使用方式与应用场景
java
杨杨杨大侠9 分钟前
打开 JVM 黑匣子——走进 Java 字节码(一)
java·jvm·agent
SimonKing10 分钟前
接口调用总失败?试试Spring官方重试框架Spring-Retry
java·后端·程序员
咖啡Beans11 分钟前
SpringCloud网关Gateway功能实现
java·spring cloud
杨杨杨大侠12 分钟前
Atlas Mapper 案例 01:初级开发者 - 电商订单系统开发
java·开源·github
华仔啊13 分钟前
Java 8都出了这么多年,Optional还是没人用?到底卡在哪了?
java
用户0915 分钟前
Gradle Cache Entries 深度探索
android·java·kotlin
叽哥37 分钟前
Kotlin学习第 9 课:Kotlin 实战应用:从案例到项目
android·java·kotlin
阿杆1 小时前
同事嫌参数校验太丑,我直接掏出了更优雅的 SpEL Validator
java·spring boot·后端
Grey Zeng10 小时前
Java SE 25新增特性
java·jdk·jdk新特性·jdk25