Java 两个线程交替输出a1b1a2b2a3b3依次类推
时间: 2024-03-07 13:25:06 浏览: 129
Java多线程通信:交替打印ABAB实例
可以使用 `wait()` 和 `notify()` 方法来实现两个线程交替输出。具体实现如下:
```java
public class AlternatePrinting {
private static final Object lock = new Object();
private static int count = 1;
public static void main(String[] args) {
Thread thread1 = new Thread(new PrintTask("a"));
Thread thread2 = new Thread(new PrintTask("b"));
thread1.start();
thread2.start();
}
static class PrintTask implements Runnable {
private String value;
public PrintTask(String value) {
this.value = value;
}
@Override
public void run() {
synchronized (lock) {
while (count <= 20) {
if ((count % 2 == 0 && "a".equals(value)) || (count % 2 == 1 && "b".equals(value))) {
System.out.print(value + count);
count++;
lock.notifyAll();
} else {
try {
lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
}
}
```
在 `PrintTask` 中,线程会不断地检查当前是否轮到自己输出,如果是就输出,并且通过 `notifyAll()` 方法唤醒另一个线程,否则就等待。在 `main()` 方法中,启动两个线程分别输出 `a` 和 `b`。运行后,会不断地交替输出 `a1b1a2b2a3b3...` 直到输出 `a10b10`。
阅读全文