【Java】【JUC】线程wait()和sleep的区别及使用方法

在多线程编程中, sleep() 和 wait() 是两个常用的方法,用于控制线程的指向状态。

(1) sleep是Thread的静态方法,wait是Object的方法,任何对象实例都能调用。

(2) sleep不会释放锁,它也不需要占用锁。wait会释放锁,但调用它的前提是当前线程占有锁(即代码锁要在synchronized中)

(3)它们都可以被interrupted方法中断。

使用方法,如下:

 1 public static void main(String[] args) throws InterruptedException {
 2     // 1.sleep的使用呢方法
 3     Thread.sleep(1000);     // 休眠1秒
 4     // 2.wait使用放放风
 5     Class lock = Demo1Main.class;
 6     synchronized (lock) {
 7         lock.wait(); // 等待满足条件
 8         // 满足条件时唤醒 
 9         lock.notify();  // 唤醒等待中的线程
10         lock.notifyAll();   // 唤醒所有等待中的线程
11     }
12 }

 

posted @ 2025-02-08 08:16  陆陆无为而治者  阅读(24)  评论(0)    收藏  举报