码迷,mamicode.com
首页 > 编程语言 > 详细

多线程按顺序打印数字,支持配置线程数目和打印数字结尾

时间:2020-05-10 19:38:56      阅读:98      评论:0      收藏:0      [点我收藏+]

标签:dprint   stat   system   void   static   atom   false   配置线   creat   

import java.util.concurrent.atomic.AtomicInteger;

/**
 * @author zerodsLyn
 * created on 2020/5/10
 */
public class MultiThreadSerialPrint {
    private final Thread[] threads;
    /**
     * 打印线程数目
     */
    final int threadNum;

    AtomicInteger num;

    private final int end;
    /**
       * 打印任务是否结束
       */
    volatile boolean running = true;

    public ThreadPrint(int threadNum, int end) {
        this.num = new AtomicInteger(0);
        this.end = end;
        this.threadNum = threadNum;
        this.threads = new Thread[threadNum];
        for (int i = 0; i < threadNum; i++) {
            Thread thread = new Thread(new PrintTask(this), "thread-" + i);
            threads[i] = thread;
        }
    }

    public void run() {
        for (Thread thread : threads) {
            thread.start();
        }
    }

    public static void main(String[] args) {
        ThreadPrint threadPrint = new ThreadPrint(10, 100);
        threadPrint.run();
        while (threadPrint.running) ;
        System.out.println("done");
    }

    private static class PrintTask implements Runnable {
        private final ThreadPrint threadPrint;
        public PrintTask(ThreadPrint threadPrint) {
            this.threadPrint = threadPrint;
        }

        @Override
        public void run() {
            while (threadPrint.running) {
                if (threadPrint.threads[threadPrint.num.get() % threadPrint.threadNum] == Thread.currentThread()) {
                    System.out.println(Thread.currentThread().getName() + " " + threadPrint.num.get());
                    if (threadPrint.num.get() == threadPrint.end) {
                        threadPrint.running = false;
                    }

                    threadPrint.num.incrementAndGet();
                }
            }
        }
    }
}

多线程按顺序打印数字,支持配置线程数目和打印数字结尾

标签:dprint   stat   system   void   static   atom   false   配置线   creat   

原文地址:https://www.cnblogs.com/zerodsLearnJava/p/12864500.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!