java数字和字母的交替打印
此代码涉及到通信的问题,用到了wait()和notifiyall()和同步锁。
package day01;
public class NumAlphabet {
public static void main(String[] args) {
final Object o = new Object();
Runnable taskNum = new Runnable(){
public void run() {
//同步锁
synchronized (o) {
for(int i=1;i <= 52;i++){
System.out.println(i);
if(i%2==0){
o.notifyAll();
try {
if( i != 52) o.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
};
Runnable taskAlplabet = new Runnable(){
@Override
public void run() {
//同步锁
synchronized (o) {
for(char c = 'a';c <= 'z';c++){
System.out.println(c);
o.notifyAll();
try {
if(c != 'z') o.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
};
Thread t1 = new Thread(taskNum);
Thread t2 = new Thread(taskAlplabet);
t1.start();
t2.start();
}
}