多线程并发订单处理功能实现(改进版)

针对之前转载文章https://mp.csdn.net/console/editor/html/100921632 里的多线程处理订单方式进行改进,并持续学习持续优化!

 

public void dealOrders() {
        AtomicLong count = new AtomicLong(0);
        try {
            // TODO 此处使用修改为 要处理订单集合
            List ts = new ArrayList<>();
            // 订单数 根据实际情况处理 0
            int MAX_ORDERS = 0;
            // 根据一定规则获取线程数
            int max_threads = GetDealOrdersThreadsNum.getMAX_THREADS(MAX_ORDERS);

            ExecutorService executor = Executors.newFixedThreadPool(max_threads);
            Future submit = null;
            for (String t : ts) {
                submit = executor.submit(() -> {
                    try {
                        synchronized (t) {
                            //处理订单

                            //  订单处理成功计数器
                            count.getAndIncrement();
                        }
                    } catch (Exception e) {
                        // 异常打印
                    }
                });
            }
            executor.shutdown();
            while (true) {
                if (executor.isTerminated()) {
                    break;
                }
            }
        } catch (Exception e) {
            // 异常打印
        } finally {
            // 释放资源
        }
    }

 有更好的方案可以传授一下! 谢谢!

 

 

下次试下集成线程池.

每次的进步都离不开持之以恒的坚持!!!

你可能感兴趣的:(JAVA,多线程)