问题概述
交替输出字母和数字需要用到线程间通信,notify()和wait()方法,这两个方法只能在同步代码块中运行,且需设置一个变量用作同步监视器。
创建字母输出类
class ThreadA extends Thread {
private Object message;
public ThreadA(Object message){
this.message=message;
}
@Override
public void run() {
synchronized (message) {
for (char i = 'A'; i <= 'Z'; i++) {
System.out.println(i);
message.notifyAll();
try {
message. wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
创建数字输出类
class ThreadB extends Thread {
private Object message;
public ThreadB(Object message){
this.message=message;
}
@Override
public void run() {
synchronized (message){
for (int i = 1; i <=26; i++) {
System.out.println(i);
message.notifyAll();
try {
message.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
测试类
public class test {
public static void main(String[] args) throws InterruptedException {
Object message=new Object();
Thread thread=new ThreadB(message);
Thread thread1=new ThreadA(message);
thread1.start();
thread.start();
}
}