用Java代码写两个线程,一个线程打印A-Z,另一个线程打印1-52,打印顺序是A12B34C56...Z5152
时间: 2024-05-14 11:19:42 浏览: 12
好的,以下是Java代码实现:
```java
public class Printer {
private static Object lock = new Object();
private static int num = 1;
private static char letter = 'A';
public static void main(String[] args) {
Thread t1 = new Thread(new PrintLetter());
Thread t2 = new Thread(new PrintNum());
t1.start();
t2.start();
}
static class PrintLetter implements Runnable {
@Override
public void run() {
synchronized (lock) {
while (letter <= 'Z') {
System.out.print(letter);
if (num % 2 == 0) {
lock.notify();
try {
lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
letter++;
}
lock.notify();
}
}
}
static class PrintNum implements Runnable {
@Override
public void run() {
synchronized (lock) {
while (num <= 52) {
System.out.print(num);
System.out.print(num + 1);
num += 2;
lock.notify();
try {
if (num <= 52) {
lock.wait();
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
lock.notify();
}
}
}
}
```
在代码中,我们使用了一个锁对象lock来保证线程之间的同步。具体实现方式是,当打印字母的线程打印完一个字母后,就通知打印数字的线程开始打印,然后自己等待,直到打印数字的线程打印完两个数字后再通知自己继续打印下一个字母。同样的,当打印数字的线程打印完两个数字后,就通知打印字母的线程开始打印,然后自己等待,直到打印字母的线程打印完一个字母后再通知自己继续打印下两个数字。这样就保证了字母和数字的交替打印,输出结果为:
```
A12B34C56D78E910F1112G1314H1516I1718J1920K2122L2324M2526N2728O2930P3132Q3334R3536S3738T3940U4142V4344W4546X4748Y4950Z5152
```
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)