Java 两个线程交替执行

    private boolean aBoolean = true;
    private void thread() {
        final String[] a = {"A1", "A2", "A3", "A4"};
        final String[] b = {"B1", "B2", "B3", "B4"};
        final Object o = new Object();
        new Thread(() -> {
            synchronized (o) {
                for (int i = 0; i < a.length; i++) {
                    if (!aBoolean) {
                        try {
                            o.wait();
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                    }
                    System.out.println(a[i]);
                    aBoolean = !aBoolean;
                    o.notify();
                }
            }
        }).start();

        new Thread(() -> {
            synchronized (o) {
                for (int i = 0; i < b.length; i++) {
                    try {
                        if (aBoolean) {
                            o.wait();
                        }
                        System.out.println(b[i]);
                        aBoolean = !aBoolean;
                        o.notify();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        }).start();

    }

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容