@Async @Scheduled(cron = "0 30 12 ? * MON")
时间: 2024-09-24 14:13:15 浏览: 41
springboot中@Async默认线程池导致OOM问题
5星 · 资源好评率100%
`@Async` 和 `@Scheduled` 是Spring框架提供的两个注解,用于异步任务处理和定时任务调度。
1. **@Async**:这个注解通常放在方法上,表示该方法将作为后台任务异步执行。当方法被标记为`@Async`时,Spring会将其包装在一个线程池中执行,这样不会阻塞当前请求线程,提高了应用程序的响应速度。例如:
```java
public class AsyncTask {
@Async
public void processData() {
// 异步执行的任务逻辑
}
}
```
2. **@Scheduled(cron = "...")**:`@Scheduled` 注解用于标注需要按指定时间表执行的任务。`cron`表达式是一个字符串,描述了任务应该何时运行。在这个例子中,`0 30 12 ? * MON` 表示任务会在每天周一的中午12点30分执行。具体的含义是:
- 第一个字段 `0 30` 表示分钟,这里是30分钟;
- 第二个字段 `12` 表示小时,这里是中午12点;
- `? *` 指的是每月的哪一天都可以,*代表所有天;
- `MON` 表示一周中的星期一。
整合起来,如果有一个定时任务类:
```java
@Service
public class ScheduledTask {
@Autowired
private SomeService someService;
@Scheduled(cron = "0 30 12 ? * MON")
public void executeDailyTask() {
someService.process();
}
}
```
当到了指定的时间,`executeDailyTask()` 将会被自动执行。
阅读全文