前几天有人问我交替打印如何实现,在面试过程中出现的大部分都是两个线程交替打印1-100内的数字,那么有没有一个通用的模板,适用于多个线程以及打印任意范围的数呢,今天发一下我写的模板,大家有什么建议可以回复,我再进行修改。
package com.java.alibaba.yimian;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.ReentrantLock;
/**
* @author Chain
* @date 2020/8/11 9:47
* 实现思路是使用Rtl以及condition实现
*/
public class ThreePrint100 {
//代表你需要几个线程
static final int threadNum = 5;
//代表你要打印哪个范围内的数字
static final int maxNum = 1000;
//代表你要从几开始打印
static volatile int num = 0;
static ReentrantLock lock = new ReentrantLock();
static Condition[] conditions = new Condition[threadNum];
static {
for(int i = 0;i < threadNum;i++){
conditions[i] = lock.newCondition();
}
}
public static void main(String[] args) {
for(int i = 0;i < threadNum;i++){
new Thread(new roundPrint(i)).start();
}
}
static class roundPrint implements Runnable{
final int index;
public roundPrint(int index){
this.index = index;
}
@Override
public void run() {
while (num |