创建3个线程Thread1、Thread2、Thread3,要求三个线程依次对一个数字进行递减操作,当数字减到0时结束。
时间: 2024-03-04 07:49:18 浏览: 33
以下是实现题目要求的 Java 代码:
```java
public class ThreadDemo {
public static void main(String[] args) {
int num = 10;
Object lock = new Object(); // 定义锁对象
Thread thread1 = new Thread(new MyRunnable(num, lock), "Thread1");
Thread thread2 = new Thread(new MyRunnable(num, lock), "Thread2");
Thread thread3 = new Thread(new MyRunnable(num, lock), "Thread3");
thread1.start();
thread2.start();
thread3.start();
}
}
class MyRunnable implements Runnable {
private int num;
private Object lock;
public MyRunnable(int num, Object lock) {
this.num = num;
this.lock = lock;
}
@Override
public void run() {
while (true) {
synchronized (lock) { // 加锁
if (num > 0) {
System.out.println(Thread.currentThread().getName() + ": " + num);
num--;
} else {
break; // 数字减到0时跳出循环
}
} // 解锁
}
}
}
```
解释一下代码的实现过程:
1. 定义一个数字变量 `num`,初始化为 10。
2. 定义一个锁对象 `lock`,用于在多个线程之间进行同步。
3. 创建3个线程 `Thread1`、`Thread2`、`Thread3`,并将它们共享同一个 `MyRunnable` 对象。
4. 在 `MyRunnable` 类中实现 `Runnable` 接口,重写 `run()` 方法,使用 `synchronized` 关键字对 `num` 进行递减操作,并在数字减到 0 时跳出循环。
5. 在 `ThreadDemo` 类中启动3个线程。
6. 运行程序,可以看到三个线程依次对数字进行递减操作,直到数字减到 0 时结束。