下面是使用 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'。

Java 多线程同步:使用 synchronized 实现线程间通信

原文地址: https://www.cveoy.top/t/topic/mNY5 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录