用Java写一个代码,模拟3个老师同时给10个小朋友发礼品,每个老师相当于一个线程
时间: 2024-03-07 20:47:50 浏览: 15
好的,以下是使用 Java 多线程实现的代码:
```java
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class TeachersAndChildren {
public static void main(String[] args) {
ExecutorService executorService = Executors.newFixedThreadPool(3); // 创建一个固定大小为3的线程池
for (int i = 1; i <= 10; i++) { // 10个小朋友
executorService.execute(new Teacher(i)); // 创建3个老师,分别给小朋友发礼品
}
executorService.shutdown(); // 关闭线程池
}
}
class Teacher implements Runnable {
private int childNumber;
public Teacher(int childNumber) {
this.childNumber = childNumber;
}
@Override
public void run() {
System.out.println("老师" + Thread.currentThread().getName() + "给小朋友" + childNumber + "发礼品");
}
}
```
代码说明:
1. `ExecutorService` 是 Java 提供的线程池接口,`Executors.newFixedThreadPool(3)` 创建一个固定大小为3的线程池。
2. `for` 循环创建10个小朋友对象,每个小朋友都由线程池中的一个老师来发礼品。
3. `Teacher` 类实现了 `Runnable` 接口,重写了 `run()` 方法,每个老师的线程会执行这个方法,输出给哪个小朋友发礼品。
4. `executorService.execute(new Teacher(i))` 将 `Teacher` 对象放入线程池中执行,相当于创建3个线程来执行 `Teacher` 的 `run()` 方法。
5. `executorService.shutdown()` 关闭线程池,释放资源。