代码示例通过实现Runnable接口的方式实现多线程,两个线程轮流打印数字,一直到100
时间: 2024-02-25 08:24:54 浏览: 27
以下是示例代码:
```java
public class PrintNumber implements Runnable {
private int number;
private static final int MAX_NUMBER = 100;
private static final Object lock = new Object(); // 用于线程同步
public PrintNumber(int number) {
this.number = number;
}
@Override
public void run() {
synchronized (lock) {
while (number <= MAX_NUMBER) {
System.out.println(Thread.currentThread().getName() + ": " + number);
number += 2;
lock.notify(); // 唤醒另一个线程
try {
lock.wait(); // 当前线程等待
} catch (InterruptedException e) {
e.printStackTrace();
}
}
lock.notify(); // 唤醒另一个线程,保证线程正常结束
}
}
public static void main(String[] args) {
PrintNumber pn = new PrintNumber(1);
Thread t1 = new Thread(pn, "Thread-1");
Thread t2 = new Thread(pn, "Thread-2");
t1.start();
t2.start();
}
}
```
在上面的代码中,我们定义了一个 `PrintNumber` 类实现了 `Runnable` 接口。在 `run()` 方法中,我们使用了 `synchronized` 关键字来保证线程同步,避免两个线程同时打印数字。同时,我们使用了 `wait()` 和 `notify()` 方法来实现线程之间的通信,使得两个线程可以轮流打印数字。在 `main()` 方法中,我们创建了两个线程,并启动它们,从而实现了多线程的效果。