题目有三个线程,打印1-100,线程1打印1,线程2打印2,线程3打印3,随后线程1打印4,以此类推。
代码实现 基于信号量的写法
volatile关键字
public class threadPrint {
/**
* 三个线程,轮流打印1-100,线程1 2 3 打印数字1 2 3 4 5 6 以此类推
*/
private static volatile int i = 1;
private static volatile int flag = 3;
public static void main(String[] args) throws Exception{
Thread t1 = new Thread(()->{
while (i <= 100) {
if (flag == 3) {
System.out.println("t1: " + i);
i++;
flag--;
}
}
},"t1");
Thread t2 = new Thread(()->{
while (i <= 100) {
if (flag == 2) {
System.out.println("t2: " + i);
i++;
flag--;
}
}
},"t2");
Thread t3 = new Thread(()->{
while (i <= 100) {
if (flag == 1) {
System.out.println("t3: " + i);
i++;
flag = 3;
}
}
},"t3");
t1.start();
t2.start();
t3.start();
t1.join();
t2.join();
t3.join();
}
}