2025-03-25 06:04:49

睡觉 vs 等待 🛌⏳

导读 在编程中,`sleep()` 和 `wait()` 是两种让程序暂停的方式,但它们有本质的区别。`sleep()` 是一个线程方法,会让当前线程休眠指定的时

在编程中,`sleep()` 和 `wait()` 是两种让程序暂停的方式,但它们有本质的区别。`sleep()` 是一个线程方法,会让当前线程休眠指定的时间,比如 `Thread.sleep(1000)` 就会让线程暂停 1 秒钟。这段时间里,线程会停止运行,但仍然占用资源,其他线程可以继续执行。它像闹钟一样,时间到了就自动醒来。

而 `wait()` 不同,它是对象的方法,通常用在多线程同步场景中。当调用 `wait()` 时,线程会释放对象锁并进入等待状态,直到被其他线程唤醒(如通过 `notify()` 或 `notifyAll()`)。这就像你在排队时暂时离开队伍,等被叫到名字再回来。因此,`wait()` 需要在 `synchronized` 块中使用,而 `sleep()` 则不需要。

总结来说,`sleep()` 是主动暂停,不会释放锁;`wait()` 是被动等待,会释放锁。两者都是编程中的重要工具,但适用场景不同,选择时需谨慎哦!⏳🌙