java ScheduledThreadPoolExecutor用法
时间: 2024-08-13 20:07:42 浏览: 56
java 定时器线程池(ScheduledThreadPoolExecutor)的实现
5星 · 资源好评率100%
`ScheduledThreadPoolExecutor`是Java并发包中的一个类,它是一个线程池,专门用于定期执行任务,比如定时执行某个操作或者在固定延迟后执行。使用这个类可以帮助你更好地管理任务的执行时间,避免过多地创建新线程。
以下是`ScheduledThreadPoolExecutor`的基本用法:
1. **创建实例**:
```java
ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(numThreads);
```
`numThreads`是你希望线程池中维护的线程数量。
2. **提交任务**:
```java
// 提交单次执行的任务
executor.schedule(runnable, delay, unit);
// 提交周期性执行的任务
executor.scheduleAtFixedRate(runnable, initialDelay, period, unit);
// 提交一次性延迟后取消的任务
executor.scheduleOnce(runnable, delay, unit);
```
`runnable`是你要执行的任务,`delay`是延迟时间,`unit`是时间单位(如`SECONDS`, `MILLISECONDS`等),`initialDelay`是首次执行的延迟,`period`是周期。
3. **取消任务**:
```java
Future<?> future = executor.schedule(runnable, delay, unit);
future.cancel(true); // 取消任务,默认会中断正在运行的任务
```
4. **获取线程池信息**:
```java
int activeCount = executor.getActiveCount(); // 当前活跃线程数
int queueSize = executor.getQueue().size(); // 线程池中的任务队列大小
```
阅读全文