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"); } }