java黑皮书第十章第4题
时间: 2023-06-22 21:38:06 浏览: 106
这题是关于Java的多线程编程。
题目描述:
编写一个Java程序,该程序创建两个线程。一个线程输出奇数,另一个线程输出偶数,要求两个线程交替输出。
实现思路:
可以使用两个线程分别输出奇数和偶数,使用一个变量控制输出的数字的奇偶性。具体实现如下:
```java
public class OddEvenPrinter {
private static volatile int count = 1; // 初始值为奇数
private static final Object lock = new Object(); // 用于同步的锁对象
public static void main(String[] args) {
Thread oddThread = new Thread(new OddPrinter());
Thread evenThread = new Thread(new EvenPrinter());
oddThread.start();
evenThread.start();
}
static class OddPrinter implements Runnable {
public void run() {
while (count <= 100) {
synchronized (lock) {
if (count % 2 == 1) {
System.out.println("奇数:" + count);
count++;
lock.notify(); // 唤醒等待的线程
} else {
try {
lock.wait(); // 等待偶数线程输出
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
}
static class EvenPrinter implements Runnable {
public void run() {
while (count <= 100) {
synchronized (lock) {
if (count % 2 == 0) {
System.out.println("偶数:" + count);
count++;
lock.notify(); // 唤醒等待的线程
} else {
try {
lock.wait(); // 等待奇数线程输出
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
}
}
```
运行程序后,可以看到输出结果交替出现奇数和偶数。
阅读全文