用Java如何实现编写两个线程一个线程打印1-52的整数,另一个线程打印字母A-Z。打印顺序为12A34B56C...5152Z。
时间: 2023-06-25 19:02:56 浏览: 110
可以使用`wait()`和`notify()`方法来实现线程的同步,具体代码实现如下:
```
public class PrintNumberAndLetter {
private static final Object lock = new Object();
private static int count = 1;
private static char letter = 'A';
public static void main(String[] args) {
Thread thread1 = new Thread(() -> {
synchronized (lock) {
while (count <= 52) {
System.out.print(count++);
System.out.print(count++);
lock.notify();
try {
lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
lock.notify();
}
});
Thread thread2 = new Thread(() -> {
synchronized (lock) {
while (letter <= 'Z') {
System.out.print(letter++);
lock.notify();
try {
lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
lock.notify();
}
});
thread1.start();
thread2.start();
}
}
```
在`Thread1`中,通过`synchronized`关键字锁住了共享对象`lock`。在循环中,先打印两个数字,然后通过`notify()`方法通知`Thread2`线程可以执行,自己则等待。当`Thread2`线程执行完毕后,通过`wait()`方法释放锁,`Thread1`线程重新获取锁并继续执行。
在`Thread2`中,同样通过`synchronized`关键字锁住共享对象`lock`。在循环中,每次打印一个字母,然后通过`notify()`方法通知`Thread1`线程可以执行,自己则等待。当`Thread1`线程执行完毕后,通过`wait()`方法释放锁,`Thread2`线程重新获取锁并继续执行。
通过这种方式,实现了两个线程的同步,按照题目要求依次打印数字和字母。
阅读全文