java notify
时间: 2023-10-14 18:31:39 浏览: 48
Java中的notify()方法是Object类中定义的方法,用于通知等待在该对象上的线程进行唤醒。该方法必须在同步代码块内部调用。当某个线程调用了该对象的wait()方法进入等待状态后,其他线程可以调用该对象的notify()方法唤醒该线程。
使用方式如下:
1. 在同步代码块内部调用notify()方法。
2. 调用notify()方法时,必须持有该对象的锁,即在synchronized代码块中调用。
3. notify()方法只会随机唤醒等待线程中的一个线程,如果有多个线程在等待,则只有其中一个会被唤醒。
示例代码如下:
```
public class NotifyDemo {
public static void main(String[] args) {
Object lock = new Object();
ThreadA threadA = new ThreadA(lock);
ThreadB threadB = new ThreadB(lock);
threadA.start();
threadB.start();
}
}
class ThreadA extends Thread {
private Object lock;
public ThreadA(Object lock) {
this.lock = lock;
}
@Override
public void run() {
synchronized (lock) {
System.out.println("ThreadA start...");
try {
lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("ThreadA end...");
}
}
}
class ThreadB extends Thread {
private Object lock;
public ThreadB(Object lock) {
this.lock = lock;
}
@Override
public void run() {
synchronized (lock) {
System.out.println("ThreadB start...");
lock.notify();
System.out.println("ThreadB end...");
}
}
}
```
上述代码中,通过创建ThreadA和ThreadB两个线程,ThreadA线程在锁对象lock上执行了wait()方法,ThreadB线程在锁对象lock上执行了notify()方法,成功唤醒了ThreadA线程并输出了"ThreadA end..."。