栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

ABC三个线程顺序打印数字

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ABC三个线程顺序打印数字

问题:有A,B,C三个线程,A线程输出A,B线程输出B, C线程输出C,要求,同时启动三个线程,按顺序输出ABC,循环10次。

此问题是面试中常见笔试题,直接上代码

定义打印线程
class PrintABCThread implements Runnable{

    // 名称
    private String name;
    // 锁
    private Lock lock;
    // 标志位
    private Integer flag;
    // 打印的数字
    private static int num = 0;
    // 打印总次数
    public static Integer MAX = 30;

    public PrintABCThread(String name,final Lock lock,Integer flag){
        this.name = name;
        this.lock = lock;
        this.flag = flag;
    }

    @Override
    public void run() {
        while (true){
            lock.lock();
            // 跳出循环条件
            if (num >= MAX){
                // 跳出循环前解锁
                lock.unlock();
                break;
            }
            // 打印
            if (num%3 == flag){
                System.out.print(name + "  ");
                num++;
            }
            // 解锁
            lock.unlock();
        }
    }

}
主函数调用测试
public class ThreadPrintABCTest {

    public static void main(String[] args) {
        // 并发锁
        final Lock lock = new ReentrantLock();
        // 修改打印数
        // PrintABCThread.Max = 50;
        // 参与打印的线程
        Thread threadA = new Thread(new PrintABCThread("A",lock,0));
        Thread threadB = new Thread(new PrintABCThread("B",lock,1));
        Thread threadC = new Thread(new PrintABCThread("C",lock,2));
        // 启动线程
        threadA.start();
        threadB.start();
        threadC.start();
    }

}
打印结果
A  B  C  A  B  C  A  B  C  A  B  C  A  B  C  A  B  C  A  B  C  A  B  C  A  B  C  A  B  C  
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/328764.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号