但行好事 莫问前程

spring Boot 2.x | 异步调用,定时任务

陈明羽 2019-03-01

微信搜索“我是树懒”或扫下方二维码关注公众号

优质文章,第一时间送达

定时任务

在springboot中实现定时任务很简单

1,启动类上增加一个@EnableScheduling注解

@EnableScheduling
@SpringBootApplication
public class SpringbootAsyncApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootAsyncApplication.class, args);
    }

}

2,创建一个定时任务类,使用@Scheduled注解

/**
 * @author: chenmingyu
 * @date: 2019/3/1 17:33
 * @description: 定时任务
 */
@Component
public class Schedule {

    @Scheduled(cron = "0/1 * * * * ?")
    public void test() {
        System.out.println("...测试...");
    }
}

启动后,输出如下

异步调用

异步调用,指的是一个可以无需等待被调用方法的返回值就让操作继续进行的方法

springboot中实现异步调用

1,启动类上增加一个@EnableAsync注解

@EnableAsync
@SpringBootApplication
public class SpringbootAsyncApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootAsyncApplication.class, args);
    }

}

2,使用@async注解

/**
 * @author: chenmingyu
 * @date: 2019/3/1 17:49
 * @description: 异步调用
 */
@Component
public class UserTest {

    @Async
    public void testOne() throws Exception{
        System.out.println("testOne 开始执行");
        Thread.sleep(2000L);
        System.out.println("testOne 执行结束");
    }

    @Async
    public void testTwo() throws Exception{
        System.out.println("testTwo 开始执行");
        Thread.sleep(1000L);
        System.out.println("testTwo 执行结束");
    }
}

测试

@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringbootAsyncApplicationTests {

    @Autowired
    private UserTest userTest;

    @Test
    public void contextLoads() throws Exception{
        userTest.testOne();
        userTest.testTwo();
        //防止主线程执行完
        Thread.sleep(5000L);
    }
}

输出

使用微信打赏

若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏

扫描二维码,分享此文章