您好,欢迎来到五一七教育网。
搜索
您的当前位置:首页利用阻塞队列优化用户下单案例

利用阻塞队列优化用户下单案例

来源:五一七教育网

一 案例场景

一般的下单流程如下图,先判断用户有没有资格/商品的库存,之后创造订单,然后处理下一次下单请求,这不利于高并发场景,我们把一部分处理流程分离出来,交给其他子线程处理,主线程处理是否符合要求即可。

 二代码实现

//阻塞队列: 当队列没有数据时进行阻塞,add添加数据
    // 缺点:超出内存大小,出现溢出  数据不安全
    private static ArrayBlockingQueue<VoucherOrder> abq = new ArrayBlockingQueue<>(1024 * 1024);
    //线程池
    private static ExecutorService Thread = Executors.newSingleThreadExecutor();


  //此注解作用:当前类初始化完毕之后自动执行该方法
    @PostConstruct
    private void ioin() {

        Thread.submit(new a());
    }




 //用来执行请求
    private class a implements Runnable {

        @Override
        public void run() {
            //为什么为turn?,因为不是执行一次就结束,因为是阻塞队列的特点
            while (true) {
                try {
                    //通过take获取对象,自然是第一个了
                    VoucherOrder take = abq.take();
                    // 逻辑:往数据库里新建订单和redis 插入已下单用户id

                    System.out.println(" __" );

                } catch (InterruptedException e) {
                    System.err.println("阻塞队列异常");
                }

            }
        }
    }
  // 创造订单
    public void addOrder() {
        VoucherOrder v = new VoucherOrder();
        abq.add(v);
    }

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 517ttc.cn 版权所有 赣ICP备2024042791号-8

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务