SpringBoot2.x异步任务

1.启动类里面使用@EnableAsync注解开启功能,自动扫描

2.在方法上面加上@Async

我这里写了一个测试类

@Component
@Async
public class AsyncTask {
    public void task1() throws InterruptedException {
        long begin = System.currentTimeMillis();
        Thread.sleep(1000);
        long end = System.currentTimeMillis();
        long total = end - begin;
        System.err.println("任务1耗时:"+total);
    }

    public void task2() throws InterruptedException {
        long begin = System.currentTimeMillis();
        Thread.sleep(2000);
        long end = System.currentTimeMillis();
        long total = end - begin;
        System.err.println("任务2耗时:"+total);
    }

    public void task3() throws InterruptedException {
        long begin = System.currentTimeMillis();
        Thread.sleep(3000);
        long end = System.currentTimeMillis();
        long total = end - begin;
        System.err.println("任务3耗时:"+total);
    }
}

然后在controller 加入一个方法调用这个异步的方法任务

/*
* 异步任务
* */
@GetMapping("async_total")
public long AsyncTotal() throws InterruptedException {
    long begin  = System.currentTimeMillis();
    asyncTask.task1();
    asyncTask.task2();
    asyncTask.task3();
    long end = System.currentTimeMillis();
    long counttotal = end - begin;
    return counttotal;
}

如果为同步这里我们最少需要花费6秒因为我三个任务一起等待了6秒

但是我使用了异步我请求这个只花费了2秒钟

发布了10 篇原创文章 · 获赞 0 · 访问量 508

猜你喜欢

转载自blog.csdn.net/DNCCCC/article/details/105033852
今日推荐