Java多线线程-----等待唤醒机制(wait notify)
在Java中,多线程之间的协作可以通过wait()
、notify()
和notifyAll()
方法来实现。这种机制通常被称为等待唤醒机制。
以下是一个使用wait()
、notify()
实现线程间协作的简单例子:
public class WaitNotifyExample {
static Object lock = new Object();
static boolean flag = false;
public static void main(String[] args) {
Thread t1 = new Thread(new Runnable() {
public void run() {
synchronized (lock) {
System.out.println("Thread 1: Waiting for signal");
while (!flag) {
try {
lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("Thread 1: Received signal");
}
}
});
Thread t2 = new Thread(new Runnable() {
public void run() {
synchronized (lock) {
System.out.println("Thread 2: Sending signal");
flag = true;
lock.notify();
}
}
});
t1.start();
try {
Thread.sleep(1000); // Wait for thread 1 to start and wait
} catch (InterruptedException e) {
e.printStackTrace();
}
t2.start();
}
}
在这个例子中,我们有两个线程t1
和t2
。t1
在一个synchronized
块中等待一个标志flag
变为true
,而t2
则将这个标志设置为true
并通知等待的线程。
注意,为了确保线程能够正确地等待和通知,所有的操作都必须在同一个锁对象上进行。在这个例子中,这个锁对象是lock
。
评论已关闭