题目描述:
启动3个线程打印递增的数字, 线程1先打印1,2,3,4,5, 然后是线程2打印6,7,8,9,10, 然后是线程3打印11,12,13,14,15. 接着再由线程1打印16,17,18,19,20….以此类推, 直到打印到75.
代码实现:
class MyThread extends Thread {
private String name;
private String p1;
private String p2;
private int count = 0;
public MyThread(String name, String p1, String p2, int count) {
this.name = name;
this.p1 = p1;
this.p2 = p2;
this.count = count;
}
@Override
public void run() {
while (count <= 75) {//总线程结束的条件
synchronized (p1) {
synchronized (p2) {
for (int i = 0; i < 5; i++) {// 循环5次,每个线程打印五个数
count += 1;
if (count > 75)
break;
System.out.println(name + "---" + count);
}
count += 10;
p2.notify();
}
try {
p1.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
pu