/*
两个线程,一个线程打印1-52,另一个打印A-Z,打印顺序为12A34B56C....5152Z.
*/
public class PrintTwo {
public static void main(String[] args) {
Print print = new Print();
IntThread intThread = new IntThread(print);
LetterThread letterThread = new LetterThread(print);
intThread.start();
letterThread.start();
}
}
class IntThread extends Thread {
private Print print;
public IntThread(Print print) {
this.print = print;
}
@Override
public void run() {
print.printInt();
}
}
class LetterThread extends Thread {
private Print print;
public LetterThread(Print print) {
this.print = print;
}
@Override
public void run() {
print.printLetter();
}
}
class Print {
private boolean flag = true;
public synchronized void printInt() {
int i = 1;
while (i < 53) {
if (!flag) {
try {
wait();
flag = true;
} catch (InterruptedException e) {
e.printStackTrace();
}
}else {
System.out.print(i);
i++;
if((i-1)%2==0){
flag = false;
notify();
}
}
}
}
public synchronized void printLetter() {
char i = 'A';
while (i <= 'Z') {
if (flag) {
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}else {
System.out.print(i);
i++;
flag = true;
notify();
}
}
}
}
两个线程,一个线程打印1-52,另一个打印A-Z,打印顺序为12A34B56C....5152Z.
最新推荐文章于 2022-08-12 20:37:15 发布
本文介绍了一个Java程序,通过创建两个线程,一个打印1到52的数字,另一个打印英文字母A到Z,确保它们交替输出。使用了`synchronized`关键字和`wait/notify`机制来实现线程间的协调。
摘要由CSDN通过智能技术生成