请编写一个wait和notify的Java多线程代码
以下是一个简单的Java多线程程序,使用wait()和notify()方法来演示线程之间的协作:
public class ThreadExample {
public static void main(String[] args) {
final Object lock = new Object(); // 创建一个共享的锁对象
Thread t1 = new Thread(new Runnable() {
public void run() {
synchronized (lock) {
try {
System.out.println("Thread 1 is waiting...");
lock.wait(); // 让线程1等待
System.out.println("Thread 1 is notified!");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
Thread t2 = new Thread(new Runnable() {
public void run() {
synchronized (lock) {
System.out.println("Thread 2 is notifying...");
lock.notify(); // 唤醒等待的线程
}
}
});
t1.start(); // 启动线程1
t2.start(); // 启动线程2
}
}
在这个例子中,我们创建了一个共享的锁对象,然后定义了两个线程t1和t2。线程t1首先获得锁,并调用wait()方法进入等待状态。线程t2获得锁,并调用notify()方法通知t1线程可以继续执行了。最后,t1线程被唤醒,并输出一条消息。
请注意,在使用wait()和notify()方法时,必须在同步块内部调用它们,否则会抛出IllegalMonitorStateException异常。此外,线程在调用wait()方法时会释放锁,直到被唤醒后才会重新获得锁。因此,如果在调用wait()方法之前没有获得锁,就会抛出IllegalMonitorStateException异常
原文地址: https://www.cveoy.top/t/topic/frUp 著作权归作者所有。请勿转载和采集!