三个线程按顺序打印ALIALI(LockSupport)

本文介绍了一个使用Java实现的多线程同步问题解决方案。通过三个独立线程分别输出字符'A'、'L'和'I',利用LockSupport进行线程间的同步控制,使这些字符能按照预定的顺序ALIALI连续打印。此外,还实现了主线程监听键盘输入的功能,一旦检测到用户输入即可终止所有子线程。
摘要由CSDN通过智能技术生成

有 3 个独立的线程,一个只会输出 A,一个只会输出 L,一个只会输出 I。在三个线程同时启动的情况下,请用合理的方式让他们按顺序打印 ALIALI。
三个线程开始正常输出后,主线程若检测到用户任意的输入则停止三个打印线程的工作,整体退出。

private static void printAli() {
    int i = 0;
    Thread thread1 = new Thread(() -> {
        while (true) {
            LockSupport.park();
            System.out.print("A");
        }
    });
    Thread thread2 = new Thread(() -> {
        while (true) {
            LockSupport.park();
            System.out.print("L");
        }
    });
    Thread thread3 = new Thread(() -> {
        while (true) {
            LockSupport.park();
            System.out.print("I");
        }
    });

    thread1.start();
    thread2.start();
    thread3.start();
    while (true) {
        if (i % 3 == 0) {
            LockSupport.unpark(thread1);
        } else if (i % 3 == 1) {
            LockSupport.unpark(thread2);
        } else if (i % 3 == 2) {
            LockSupport.unpark(thread3);
        }
        i++;
        Thread.sleep(1000);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值