.写两个线程,一个线程打印1-52,另一个线程答应字母A-Z。打印顺序为12A34B56C……5152Z。通过使用线程之间的通信协调关系。
public class Test1 {
public static void main(String[] args) {
Print print = new Print();
Num n = new Num(print);
Alphabetical a = new Alphabetical(print);
Thread t1 = new Thread(n);
Thread t2 = new Thread(a);
t1.start();
t2.start();
}
}
class Print {
boolean flag = false;
public synchronized void printnum() throws InterruptedException {
for (int i = 1; i <= 52; i++) {
while (flag == true) {
this.wait();
}
System.out.print(i);
if (i % 2 == 0) {
flag = true;
this.notifyAll();
}
}
}
public synchronized void printa() throws InterruptedException {
for (int i = 1; i <= 26; i++) {
while (flag == false) {
this.wait();
}
System.out.print((char) (i + 64));
flag = false;
this.notify();
}
}
}
class Num implements Runnable {
Print p;
public Num(Print p) {
super();
this.p = p;
}
@Override
public void run() {
try {
p.printnum();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
class Alphabetical implements Runnable {
Print p;
public Alphabetical(Print p) {
super();
this.p = p;
}
@Override
public void run() {
try {
p.printa();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}