编写两个线程,一个线程打印1-52的整数,另一个线程打印字母A-Z。打印顺序为12A34B56C….5152Z。即按照整数和字母的顺序从小到大打印,并且每打印两个整数后,打印一个字母,交替循环打印,直到打印到整数52和字母Z结束。
package com.xh.xu;
public class Six {
public static void main(String[] args) {
//创建对象作为线程的锁
Print x = new Print();
//数字线程
Thread x1 = new Thread() {
@Override
public void run() {
//调用printA打印数字
x.printA();
}
};
//字母线程
Thread x2 = new Thread() {
@Override
public void run() {
//调用printB打印字母
x.printB();
}
};
//线程启动
x1.start();
x2.start();
}
}
class Print{
public synchronized void printA() {
//默认为true
boolean flag = true;
while(flag) {
for(int i=1;i<=52;i++) {
//打印数字
System.out.print(i);
//每打印两个数字就进入等待状态,释放锁
if(i%2==0) {
try {
this.wait();
this.notifyAll();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
//for语句循环完毕,退出循环
flag = false;
}
}
public synchronized void printB() {
//默认为true
boolean flag = true;
while(flag) {
//打印字母
for(int i=65;i<91;i++) {
//每打印一个字母就进入等待状态,释放锁
System.out.print((char) i);
try {
this.notifyAll();
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
//for语句循环完毕,退出循环
flag = false;
}
}
}
个人代码,如有不对请指出~