首页 > 其他分享 >异步执行

异步执行

时间:2023-06-04 20:01:00浏览次数:36  
标签:异步 执行 confirmVo items List collect ware

异步执行

  • 远程查询库存
@FeignClient("gulimall-ware")
public interface WmFeignService {
    //查询是否有库存
    @PostMapping("ware/waresku/hasstock")//ware/waresku
    public R getSkusHassStock(@RequestBody List<Long> skuIds);
}
gulimall-ware 中注册了发现 EnableDiscoveryClient 
@EnableFeignClients
@EnableDiscoveryClient //注册发现

注入
@Autowired
WmFeignService wmFeignService;
//异步执行
CompletableFuture<Void> getCartFuture =
    CompletableFuture.runAsync(
        () -> {
          System.out.println("副线程..." + Thread.currentThread().getId());
          // 查询购物车所有选中的购物项
            RequestContextHolder.setRequestAttributes(requestAttributes);
          List<OrderItemVo> items = cartFeginService.getCurrentUserCartItems();
          confirmVo.setItems(items);
        },
        executor).thenRunAsync(()->{
            //继续执行异步操作
        List<OrderItemVo> items = confirmVo.getItems();
        //拿到商品id
        List<Long> collect = items.stream().map(item -> item.getSkuId()).collect(Collectors.toList());
        //远程查询库存
        R hasStock = wmFeignService.getSkusHasStock(collect);
        List<SkuStockVo> data = hasStock.getData(new TypeReference<List<SkuStockVo>>() {
        });
        if(data!=null){
            Map<Long, Boolean> collect1 = data.stream().collect(Collectors.toMap(SkuStockVo::getSkuId, SkuStockVo::getHsaStock));
            confirmVo.setStocks(collect1);
        }
    });

标签:异步,执行,confirmVo,items,List,collect,ware
From: https://blog.51cto.com/u_15993308/6412118

相关文章

  • 7. 特殊SQL的执行
    1.模糊查询‍演示代码:/***测试模糊查询*@parammohu*@return*/List<User>testMohu(@Param("mohu")Stringmohu);‍<!--List<User>testMohu(@Param("mohu")Stringmohu);--><selectid="testMohu"resultType="U......
  • 自定义异步注解
    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency>@RestController@Slf4jpublicclassThread04{@Autowiredprivate......
  • Dubbo实战篇--异步
    theme:cyanosis日期更新说明2023年6月3日初版编辑最是人间留不住,朱颜辞镜花辞树离开这段时间,发现Dubbo其实已经已经发布到了3.2了,其实有点断更。前言“异步”作为性能优化的利器之一,对于系统优化是一种常见思路;Dubbo天然的异步模式,不需要启动多线程即可完成......
  • 异步爬虫demo2
    importreimportaiohttpimportasyncioclassAsyn:def__init__(self):self.__headers={'user-agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/112.0.0.0Safari/537......
  • Servlet3.0新功能: 异步处理
    2EE6和Glassfish3V正式发布了,J2EE6正式发布了Servlet3.0,为了能更好的对WEB2.0提供支持,3.0添加了异步处理的机制.HTTP1.1相对于HTTP1.0的影响.HTTP1.1最大的一个改变就是提供了长连接,这样HTTP不再是一次请求,一次连接的协议了,只要HTTP的connection不关闭,一次HTTP连接......
  • Async异步注解
    @RestController@Slf4jpublicclassThread04{@AutowiredprivateOrderManageorderManage;@GetMapping("addOrder")publicStringaddOrder(){log.info("1");//异步处理orderManage.asyncLog();......
  • Gorm - 链式执行输出执行的SQL【gorm io版本】
    在GROM使用链式操作过程中,我们想要知道最终执行的SQL是什么,本文讲解三种常见的SQL日志打印方法。一、全局打印所有的SQL在gorm.io版本中,我们可以在建立连接时指定打印info级别的sql。import("time""gorm.io/driver/mysql""gorm.io/gorm""gorm.io/go......
  • 前置知识:方法递归的算法、执行流程详解
       ......
  • python后台执行程序
    Windows系统搭建好Python的环境后,进入Python的安装目录,大家会发现目录中有python.exe和pythonw.exe两个程序。如下图所示:它们到底有什么区别和联系呢?概括说明一下:python.exe在运行程序的时候,会弹出一个黑色的控制台窗口(也叫命令行窗口、DOS/CMD窗口);pythonw.exe是无窗口的Pyth......
  • 面试题:如何理解 JS的异步?
    JS是一门单线程的语言,这是因为它运行在浏览器的渲染主线程中,而渲染主线程只有一个而渲染主线程承担着诸多的工作,渲染页面、执行JS都在其中运行。如果使用同步的方式,就极有可能导致主线程产生阻塞,从而导致消息队列中的很多其他任务无法得到执行。这样一来,一方面会导致繁忙的主线......