wait()相当于阻塞还是挂起
时间: 2023-12-21 10:03:37 浏览: 25
根据提供的引用内容,wait()方法相当于挂起线程。当一个线程调用wait()方法时,它会被挂起并释放对象锁,直到其他线程调用该对象的notify()或notifyAll()方法来唤醒该线程。因此,wait()方法是用于线程间通信的一种方式,它可以让线程等待某些条件的发生,而不需要占用CPU资源。
举个例子,假设有两个线程A和B,它们共享一个对象obj。线程A在执行过程中调用了obj.wait()方法,那么线程A就会被挂起,直到线程B调用了obj.notify()或obj.notifyAll()方法来唤醒线程A。
```java
// 示例代码
public class WaitNotifyExample {
public static void main(String[] args) {
Object obj = new Object();
Thread thread1 = new Thread(() -> {
synchronized (obj) {
try {
System.out.println("Thread 1 is waiting...");
obj.wait();
System.out.println("Thread 1 is awake!");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
Thread thread2 = new Thread(() -> {
synchronized (obj) {
System.out.println("Thread 2 is running...");
obj.notify();
}
});
thread1.start();
thread2.start();
}
}
```