编写一个应用程序创建两个线程,分别使用Thread子类和 Thread类编程实现 一个线程打印输出1~1000之间所有的奇数, 另外一个线程打印输出1~1000之间所有的偶数, 要求两个线程休眠一段时间后继续打印输出下一个数,java代码
时间: 2025-01-02 19:46:29 浏览: 17
当然可以。在Java中,我们可以创建两个线程分别处理奇数和偶数的打印任务。这里是一个简单的示例,我们将使用`Thread`类和匿名内部类的方式分别实现:
```java
public class PrintNumbers {
private int number = 1;
public static void main(String[] args) {
// 创建打印奇数的线程
PrintOddNumbers oddThread = new PrintOddNumbers();
PrintOddNumbers_oddThread t1 = new PrintOddNumbers_oddThread(oddThread);
// 创建打印偶数的线程
PrintEvenNumbers evenThread = new PrintEvenNumbers();
PrintEvenNumbers_evenThread t2 = new PrintEvenNumbers_evenThread(evenThread);
// 启动线程
t1.start(); // 打印奇数
t2.start(); // 打印偶数
try {
// 等待两个线程完成
t1.join();
t2.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
// 定义一个公共的打印方法供内部线程使用
public synchronized void printNumber() {
if (number <= 1000) {
System.out.println(Thread.currentThread().getName() + ": " + number++);
this.sleepForABit();
}
}
// 内部类用于打印奇数
private class PrintOddNumbers_oddThread extends Thread {
private PrintOddNumbers parent;
public PrintOddNumbers_oddThread(PrintOddNumbers parent) {
this.parent = parent;
}
@Override
public void run() {
while (parent.number % 2 != 0) {
parent.printNumber();
}
}
private void sleepForABit() {
try {
Thread.sleep(500); // 线程休眠500毫秒
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
// 内部类用于打印偶数
private class PrintEvenNumbers_evenThread extends Thread {
private PrintEvenNumbers parent;
public PrintEvenNumbers_evenThread(PrintEvenNumbers parent) {
this.parent = parent;
}
@Override
public void run() {
while (parent.number % 2 == 0) {
parent.printNumber();
}
}
}
}
阅读全文