编写一个应用程序创建两个线程,一个线程打印输出1~1000之间所有的奇数, 另外一个线程打印输出1~1000之间所有的偶数, 要求两个线程随机休眠一段时间后继续打印输出下一个数。请使用Runnable接口编程实现。
时间: 2024-02-28 10:52:00 浏览: 62
好的,以下是实现代码:
```java
public class NumberPrinter implements Runnable {
private int start;
private int end;
private boolean isOdd;
public NumberPrinter(int start, int end, boolean isOdd) {
this.start = start;
this.end = end;
this.isOdd = isOdd;
}
@Override
public void run() {
for (int i = start; i <= end; i++) {
if (isOdd && i % 2 != 0) {
System.out.println(Thread.currentThread().getName() + ": " + i);
} else if (!isOdd && i % 2 == 0) {
System.out.println(Thread.currentThread().getName() + ": " + i);
}
try {
Thread.sleep(new Random().nextInt(1000));
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public class Main {
public static void main(String[] args) {
NumberPrinter oddPrinter = new NumberPrinter(1, 1000, true);
NumberPrinter evenPrinter = new NumberPrinter(1, 1000, false);
Thread oddThread = new Thread(oddPrinter, "OddThread");
Thread evenThread = new Thread(evenPrinter, "EvenThread");
oddThread.start();
evenThread.start();
}
}
```
我们首先定义了一个 `NumberPrinter` 类,它实现了 `Runnable` 接口,用于打印指定范围内的奇数或偶数。在 `run()` 方法中,我们遍历指定范围内的所有数字,如果当前数字是奇数且当前线程要打印奇数,或者当前数字是偶数且当前线程要打印偶数,就打印输出当前数字。然后,我们使用 `Thread.sleep()` 方法让当前线程随机休眠一段时间,模拟出两个线程交替打印的效果。
在 `Main` 类中,我们创建了两个 `NumberPrinter` 对象,一个用于打印奇数,一个用于打印偶数。然后,我们创建了两个线程,一个用于执行打印奇数任务,另一个用于执行打印偶数任务。最后,我们启动这两个线程,让它们并发执行打印任务。
阅读全文