@Scheduled 配置线程池
时间: 2023-08-17 11:11:09 浏览: 137
你可以使用`@Scheduled`注解来配置定时任务,并结合线程池来执行任务。首先,你需要在配置类上添加`@EnableScheduling`注解,以启用定时任务的功能。然后,在你的定时任务方法上添加`@Scheduled`注解,指定执行的时间表达式。
要配置线程池,你可以使用`ThreadPoolTaskScheduler`类。在配置类中,创建一个`ThreadPoolTaskScheduler`的Bean,并配置线程池的属性,例如核心线程数、最大线程数、队列容量等。接下来,在定时任务方法上使用`@Async`注解,将任务异步执行。
下面是一个示例代码:
```java
@Configuration
@EnableScheduling
public class ScheduledConfig {
@Bean
public ThreadPoolTaskScheduler taskScheduler() {
ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
scheduler.setPoolSize(10); // 设置核心线程数
scheduler.setMaxPoolSize(20); // 设置最大线程数
scheduler.setThreadNamePrefix("task-scheduler-"); // 设置线程名前缀
return scheduler;
}
@Scheduled(fixedRate = 1000) // 每隔1秒执行一次
@Async // 异步执行任务
public void scheduledTask() {
// 执行定时任务的逻辑
}
}
```
在上面的示例中,`taskScheduler()`方法创建了一个核心线程数为10、最大线程数为20的线程池,并设置了线程名前缀。`scheduledTask()`方法使用了`@Scheduled`注解来配置定时任务,每隔1秒执行一次,并使用`@Async`注解将任务异步执行。
通过以上配置,你就可以使用`@Scheduled`注解来配置定时任务,并结合线程池来执行任务了。
阅读全文