使用java写两个线程,一个线程输出1-52,另一个线程输出A-Z,通过线程协调编程,实现输出顺序是12A34B...5152Z;
时间: 2024-02-29 22:51:35 浏览: 83
可以使用 wait() 和 notify() 等方法来协调两个线程的执行顺序。具体实现如下:
```java
public class ThreadTest {
public static void main(String[] args) {
final Object lock = new Object();
final Thread t1 = new Thread(() -> {
synchronized (lock) {
for (int i = 1; i <= 52; i++) {
System.out.print(i);
if (i % 2 == 0) {
lock.notify();
try {
lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
lock.notify();
}
});
final Thread t2 = new Thread(() -> {
synchronized (lock) {
for (char i = 'A'; i <= 'Z'; i++) {
System.out.print(i);
lock.notify();
try {
if (i != 'Z') {
lock.wait();
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
t1.start();
t2.start();
}
}
```
在 t1 中,每输出一个偶数就通知 t2 线程,然后等待 t2 线程输出完毕后再继续执行。在 t2 中,每输出一个字母就通知 t1 线程,然后等待 t1 线程输出两个数字后再继续执行。最终输出的结果就是 12A34B...5152Z。
阅读全文