ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(5);
时间: 2025-05-13 16:51:25 浏览: 27
### 创建包含5个线程的调度线程池
在 Java 中,`ScheduledExecutorService` 是 `ExecutorService` 的一个扩展接口,用于支持定时和周期性任务的执行。通过 `Executors.newScheduledThreadPool(int corePoolSize)` 方法可以创建一个指定核心线程数的调度线程池[^1]。
下面是一个完整的示例代码展示如何使用 `newScheduledThreadPool` 来创建一个包含 5 个线程的调度线程池,并安排任务在其上运行:
```java
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class ScheduledThreadPoolExample {
public static void main(String[] args) {
// 创建一个包含5个线程的调度线程池
ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(5);
// 定义一个简单的Runnable任务
Runnable task = () -> System.out.println("Task executed by " + Thread.currentThread().getName());
// 使用schedule方法,在延迟3秒后执行一次任务
scheduledExecutorService.schedule(task, 3, TimeUnit.SECONDS);
// 使用scheduleAtFixedRate方法,每隔2秒执行一次任务(首次启动有初始延迟)
scheduledExecutorService.scheduleAtFixedRate(() ->
System.out.println("Periodic Task at " + System.currentTimeMillis()), 0, 2, TimeUnit.SECONDS);
// 关闭线程池的操作通常放在适当的地方以防止资源泄漏
try {
Thread.sleep(10000); // 让主线程等待一段时间以便观察任务执行情况
} catch (InterruptedException e) {
e.printStackTrace();
}
scheduledExecutorService.shutdown(); // 平滑关闭线程池
}
}
```
上述代码展示了两个主要功能:
- **一次性任务**:通过 `scheduledExecutorService.schedule()` 方法设置了一个延时 3 秒的任务。
- **周期性任务**:通过 `scheduledExecutorService.scheduleAtFixedRate()` 设置了每两秒钟执行一次的任务[^2]。
当不再需要线程池时,调用 `shutdown()` 或者 `shutdownNow()` 可以释放相关资源并停止所有未完成的任务。
### 注意事项
为了确保程序能够正常结束而不被阻塞,建议在线程池提交完所有任务后显式地调用其 `shutdown()` 方法来平滑退出线程池。
---
阅读全文
相关推荐









