以下是一种实现方式,使用 Java 的多线程和锁机制:

import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

public class PrintABC {
    private static final int PRINT_TIMES = 50;
    private static final Lock lock = new ReentrantLock();
    private static final Condition conditionA = lock.newCondition();
    private static final Condition conditionB = lock.newCondition();
    private static final Condition conditionC = lock.newCondition();
    private static volatile int state = 0;

    public static void main(String[] args) {
        Thread threadA = new Thread(new PrintThread("A", 0, conditionA, conditionB));
        Thread threadB = new Thread(new PrintThread("B", 1, conditionB, conditionC));
        Thread threadC = new Thread(new PrintThread("C", 2, conditionC, conditionA));

        threadA.start();
        threadB.start();
        threadC.start();
    }

    static class PrintThread implements Runnable {
        private final String name;
        private final int targetState;
        private final Condition currentCondition;
        private final Condition nextCondition;

        public PrintThread(String name, int targetState, Condition currentCondition, Condition nextCondition) {
            this.name = name;
            this.targetState = targetState;
            this.currentCondition = currentCondition;
            this.nextCondition = nextCondition;
        }

        @Override
        public void run() {
            for (int i = 0; i < PRINT_TIMES; i++) {
                lock.lock();
                try {
                    while (state % 3 != targetState) {
                        currentCondition.await();
                    }
                    System.out.print(name);
                    state++;
                    nextCondition.signal();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                } finally {
                    lock.unlock();
                }
            }
        }
    }
}

这段代码创建了三个线程,每个线程分别打印字符 A、B、C,并且使用 state 变量来控制线程的执行顺序。每个线程在打印完成后会唤醒下一个线程,通过 currentCondition.await()nextCondition.signal() 实现线程间的协作。每个线程打印 50 次,最终输出的结果为循环打印 ABC 50 次

代码实现三个线程循环打印 ABC重复 50 次

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

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