3个线程,分别负责打印3的倍数、5的倍数、其他;要求整体按顺序打印出1~100,不可重复
public class Test {
static class Printor {
int num;//需要打印得数字1~100
synchronized void print(int printId) throws InterruptedException {
for(num=1;num<=100;){
if( (printId==0 && num%3==0) //线程0打印3的倍数:3、6、9
|| (printId==1 && num%5==0) //线程1打印5的倍数:5、10、15
|| (printId==2 && num%3!=0 && num%5!=0) //线程2打印其他:1、2、4
){
System.out.println(num++);
notifyAll();
}else{
wait();
}
}
}
}
public static void main(String[] args) {
Printor printor = new Printor();
for(int i=0;i<3;i++){
int printId = i;
new Thread(()->{
try {
printor.print(printId);
} catch (InterruptedException e) {
}
}).start();
}
}
}