最近看到个Java多线程的面试题,要求3个线程,分别负责打印A/B/C,要求三个线程按照ABC的顺序输出N次
。
然后下面是我的解题思路:
首先,多线程问题,无脑起一个ThreadPoolExecutor
ThreadPoolExecutor executor = new ThreadPoolExecutor(poolSize,maxPoolSize,1,TimeUnit.MINUTES, new LinkedBlockingQueue<>(),new MyThreadFactory());
然后由于是要输出N次,在多线程问题中,我们需要一个支持CAS的AtomicInteger
来计数
AtomicInteger count = new AtomicInteger(1);
final int target = 10;
然后接下来就是关键了,ABC要顺序输出,也就是要实现