public class MyTest {
public static void main(String[] args) {
//创建任务对象
MyTask myTask = new MyTask();
for(int i=1;i<=3;i++){
new Thread(myTask,i+"").start();
}
}
}
public class MyTask implements Runnable{
//线程标记
int state =1;
//要打印的自增数字标志1-75
int number=1;
@Override
public void run() {
//经推算,每个线程需要运行五轮
for(int i=0;i<5;i++){
print(Thread.currentThread().getName());
}
}
public synchronized void print(String name){//参数为线程名(1、2、3)
int num=Integer.parseInt(name);
while(num!=state){
try {
this.wait();//this代表进入本方法的线程对象
} catch (InterruptedException e) {
e.printStackTrace();
}
}
//进入本方法的每个线程都要连续打印5个数字
for(int i=0;i<5;i++){
System.out.println("线程"+num+":"+number++);
}
//此线程打印完5个连续数字,然后运算标记使下一个线程进入
state=state%3+1;
//唤醒本线程以外的其他线程
this.notifyAll();
}
}