springboot使用定时任务、异步

来源:互联网 发布:金十数据如何看原油 编辑:程序博客网 时间:2024/06/05 10:21

1、定时任务:纯注解方式

@Configuration@EnableScheduling@Componentpublic class TaskConfig {    //  定时任务:每天凌晨3点跑定时    @Scheduled(cron = "0 0 3 * * ?")    public void myTask() {        System.out.println("定时任务启动。。。。。。");    }}

2、异步

         1)注解方式开启异步并设置异步线程池参数

@Configuration@EnableAsyncpublic 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")@RestControllerpublic 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";    }}

 

@Componentpublic class AsyncTask {    @Async    public void async() {        try {            Thread.sleep(1000);        } catch (InterruptedException e) {            e.printStackTrace();        }        System.out.println("3");    }}
原创粉丝点击