Java 多线程同步:使用 synchronized 实现线程间通信
下面是使用 synchronized 实现的例子:
public class SynchronizedExample {
private static boolean flag = false;
public static void main(String[] args) throws InterruptedException {
Thread t1 = new Thread(() -> {
synchronized (SynchronizedExample.class) {
while (!flag) {
try {
SynchronizedExample.class.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
System.out.println('Thread 1: flag is true');
});
Thread t2 = new Thread(() -> {
synchronized (SynchronizedExample.class) {
flag = true;
SynchronizedExample.class.notifyAll();
}
System.out.println('Thread 2: set flag to true');
});
t1.start();
Thread.sleep(1000); // wait for t1 to start
t2.start();
}
}
在这个例子中,我们使用了一个 class 对象作为锁,来保证线程之间的同步。线程 1 会在 while 循环中等待,直到 flag 变为 true。线程 2 会先获取锁,将 flag 设置为 true,并通过 notifyAll() 方法唤醒在锁上等待的线程。最终,线程 1 会被唤醒,输出'Thread 1: flag is true'。
原文地址: https://www.cveoy.top/t/topic/mNY5 著作权归作者所有。请勿转载和采集!