spring boot中多线程使用实例
2020-04-02 本文已影响0人
灿烂的GL
作用:硬件性能固定的情况下,提高程序运行效率,避免程序阻塞
逻辑是,在未用多线程:调用A——等待响应——调用B——等待响应
多线程:调用A——调用B——等待响应
方法一、利用ThreadPoolTaskExecutor使用多线程
利用spring boot提供的ThreadPoolTaskExecutor
先定义线程池基本参数

调用定义参数

定义线程池
@Bean("taskExecutor")也可以这样注入,在异步调用的时候直接加上注解@Async("taskExecutor")即可

调用线程池

方法二、利用注解使用多线程
配置文件中定义基本参数

启动项上加上@EnableAsync

在异步任务上加入@Async即可,表示它将在一个单独的线程上运行
方法三、CompletableFuture异步任务
CompletableFuture异步任务适用场景
1.很多个异步线程执行时间可能不一致,主线程业务不能一直等着,这时候我可能会想要只等最快的线程执行完或者最重要的那个任务执行完,亦或者我只等1秒钟,至于没返回结果的线程我就用默认值代替.
2.两个异步任务之间执行独立,但是第二个依赖第一个的执行结果.
常用方法:

调用实例:

参考链接:
【0】线程池原理:https://blog.csdn.net/weixin_28760063/article/details/81266152
【1】多线程使用:https://blog.csdn.net/u013467442/article/details/89366155
【2】CompletableFuture:https://www.cnblogs.com/fingerboy/p/9948736.html