帮我写一个代码,要求如下创建两个线程,输出1到100的数字。实现Runnable接口,创建两个线程,分别输出奇数和偶数。创建两个线程,分别打印传入的两个字符串“Hello”和“World”。编写一个程序,使用同步代码块确保两个线程交替打印数字。
时间: 2024-10-20 15:04:41 浏览: 22
Java多线程-创建多线程的基本方式二:实现Runnable接口
好的,首先我们来一步步实现这些功能:
1. 创建一个实现了`Runnable`接口的类,用于处理打印奇数或偶数的任务:
```java
public class NumberPrinter implements Runnable {
private int start, end;
private String number;
public NumberPrinter(int start, int end, String number) {
this.start = start;
this.end = end;
this.number = number;
}
@Override
public void run() {
for (int i = start; i <= end; i++) {
if (number.equals("Odd")) {
System.out.println(Thread.currentThread().getName() + ": " + i);
} else if (number.equals("Even")) {
if (i % 2 == 0) {
System.out.println(Thread.currentThread().getName() + ": " + i);
}
}
}
}
}
```
2. 创建两个线程,一个负责打印奇数,另一个负责打印偶数:
```java
Thread oddThread = new Thread(new NumberPrinter(1, 100, "Odd"));
Thread evenThread = new Thread(new NumberPrinter(2, 100, "Even"));
oddThread.start();
evenThread.start();
```
3. 使用同步代码块确保两个线程交替打印数字(这里假设`oddThread`先启动):
```java
class Print交替 extends NumberPrinter {
private volatile boolean next = true;
// ... (NumberPrinter构造方法)
@Override
public void run() {
while (true) {
super.run();
synchronized (this) {
try {
if (!next) {
wait(); // 当前线程等待
}
next = false; // 交换下一个
notifyAll(); // 唤醒其他等待线程
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
Print交替交替Thread = new Print交替(1, 100, "Odd");
Print交替交替Thread.start();
// 如果你想让"World"线程也进行交替,可以在适当的地方添加另一个Print交替实例并启动
```
阅读全文