商城业务_商品详情 通过异步编程优化

最近在做商城项目,项目中有一个展示商品详情的功能,逻辑上很简单

给大家看一下代码

 这是最开始的写法,但是后来仔细一看这样是有问题的,这段代码里总共是有5个查询操作,并且还是同步操作,这样的话如果其中一个耗时太久,其他的就得等待,代码性能很差,这个时候我们就想到了一个优化的方法异步编程(CompletableFuture)

下面展示一下具体步骤

第一步 我们得有一个自己的线程池

(为什么要用线程池以及线程池的好处我就不赘述了,不懂的可以百度异步编程,或者等我之后发布一篇专门讲述异步编程的博客)

@Configuration
public class MyThreadConfig {

    @Bean
    public ThreadPoolExecutor threadPoolExecutor(ThreadPoolConfigProperties pool){
        return new ThreadPoolExecutor(pool.getCoreSize(), //核心线程数
                pool.getMaxSize(),  //最大线程数
                pool.getKeepAliveTime(), TimeUnit.SECONDS,  //线程空闲多长时间关闭
                new LinkedBlockingDeque<>(100000),  //阻塞队列 长度1OW
                Executors.defaultThreadFactory(),  //线程工厂
                new ThreadPoolExecutor.AbortPolicy()  //拒绝策略
                );
    }

}
@ConfigurationProperties(prefix="gulimall.thread")
@Component
@Data
public class ThreadPoolConfigProperties {

    private Integer coreSize;
    private Integer maxSize;
    private Integer keepAliveTime;

}
gulimall.thread.core-size=20
gulimall.thread.max-size=200
gulimall.thread.keep-alive-time=10

这样搞是方便我们后期nacos动态配置 

第二步 修改业务代码

注入线程池

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值