1、定时任务:纯注解方式
@Configuration
@EnableScheduling
@Component
public class TaskConfig {
// 定时任务:每天凌晨3点跑定时
@Scheduled(cron = "0 0 3 * * ?")
public void myTask() {
System.out.println("定时任务启动。。。。。。");
}
}
2、异步
1)注解方式开启异步并设置异步线程池参数
@Configuration
@EnableAsync
public class AsyncConfig {
/*
此处成员变量应该使用@Value从配置中读取
*/
/** Set the ThreadPoolExecutor's core pool size. */
private int corePoolSize = 10;
/** Set the ThreadPoolExecutor's maximum pool size. */
private int maxPoolSize = 200;
/** Set the capacity for the ThreadPoolExecutor's BlockingQueue. */
private int queueCapacity = 10;
@Bean
public Executor taskExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(corePoolSize);
executor.setMaxPoolSize(maxPoolSize);
executor.setQueueCapacity(queueCapacity);
executor.initialize();
return executor;
}
}
2)测试异步
@RequestMapping(value = "/api/async")
@RestController
public class AsyncController {
@Autowired
private AsyncTask asyncTask;
@GetMapping(value = "/test")
public String testAsync() {
/*
123-->异步,132-->同步
*/
System.out.println("1");
asyncTask.async();
System.out.println("2");
return "test";
}
}
@Component
public class AsyncTask {
@Async
public void async() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("3");
}
}