java请用两个线程交替输出A1B2C3D4...,A线程输出字母,B线程输出数字,要求A线程首先执行,B线程其次执行!
时间: 2024-01-12 10:03:36 浏览: 146
下面是一个简单的实现:
```java
public class AlternateOutput {
private static Object lock = new Object();
private static int count = 1;
public static void main(String[] args) {
Thread thread1 = new Thread(new Runnable() {
@Override
public void run() {
synchronized (lock) {
for (int i = 0; i < 26; i++) {
System.out.print((char) ('A' + i));
try {
lock.notify();
lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
lock.notify();
}
}
}, "A");
Thread thread2 = new Thread(new Runnable() {
@Override
public void run() {
synchronized (lock) {
for (int i = 1; i <= 26; i++) {
System.out.print(count++);
try {
lock.notify();
lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
lock.notify();
}
}
}, "B");
thread1.start();
thread2.start();
}
}
```
这里使用了一个共享的对象锁 `lock`,并且使用了 `wait()` 和 `notify()` 方法实现线程的交替执行。其中,线程A输出字母,线程B输出数字,每次输出后都会调用 `lock.wait()` 方法,暂停当前线程并释放锁,等待另一个线程的唤醒。另一个线程在输出完后,会调用 `lock.notify()` 方法,唤醒等待的线程并继续执行。最后,当两个线程全部执行完毕时,需要调用 `lock.notify()` 方法唤醒最后一个等待的线程,以避免程序阻塞。
阅读全文