下面我来简单介绍一下Spring内置的任务调度的添加、取消与重置详解。
1. 添加任务
Spring内置的任务调度通过使用TaskScheduler
和CronTask
对象来完成任务的调度。下面是添加任务的步骤:
- 首先,在Spring的配置文件中配置一个
TaskScheduler
对象。可以使用ThreadPoolTaskScheduler
或者ConcurrentTaskScheduler
两种实现。
xml
<bean id="taskScheduler" class="org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler">
<property name="poolSize" value="5" />
</bean>
- 然后,在需要定时执行的方法上添加
@Scheduled
注解。
```java
@Service
public class MyService {
@Scheduled(cron = "0 0 12 * * ?")
public void doSomething() {
// do something
}
}
```
其中,@Scheduled
注解有多种用法,可以根据实际需求来使用。
2. 取消任务
如果需要取消已经添加的任务,可以使用ScheduledFuture
对象来完成。将任务调度返回的ScheduledFuture
对象保存起来,并在需要取消任务时调用cancel()
方法即可取消任务。
下面是一个取消任务的示例:
@Service
public class MyService {
@Autowired
private TaskScheduler taskScheduler;
private ScheduledFuture<?> scheduledFuture;
@PostConstruct
public void init() {
scheduledFuture = taskScheduler.schedule(() -> {
// do something
}, new CronTrigger("0 0/2 * * * ?"));
}
public void cancelTask() {
scheduledFuture.cancel(true);
}
}
在上面的示例代码中,我们在任务添加时保存了ScheduledFuture
对象,当需要取消任务时,调用cancel()
方法即可。
3. 重置任务
如果需要修改已经添加的任务的执行周期,可以使用resetTrigger()
方法重新设置任务的执行时间。
下面是一个重置任务的示例:
@Service
public class MyService {
@Autowired
private TaskScheduler taskScheduler;
private ScheduledFuture<?> scheduledFuture;
@PostConstruct
public void init() {
scheduledFuture = taskScheduler.schedule(() -> {
// do something
}, new CronTrigger("0 0/30 * * * ?"));
}
public void resetTask() {
CronTrigger newTrigger = new CronTrigger("0 0/10 * * * ?");
scheduledFuture = taskScheduler.schedule(() -> {
// do something
}, newTrigger);
}
}
在上面的示例代码中,我们在任务添加时保存了ScheduledFuture
对象,当需要重置任务执行周期时,重新创建一个CronTrigger
对象,然后调用resetTrigger()
方法即可。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Spring内置任务调度如何实现添加、取消与重置详解 - Python技术站