线程池中线程有阻塞,但一直在运行,请问是啥问题

来源:5-16 插队演示2

慕仰1794849

2021-06-10

@Override
public void autoInfo(int shardingTotalCount, int shardingItem) {
// 阻塞队列容量声明为100个
ThreadPoolExecutor executorServices = new ThreadPoolExecutor(10, 12,
60L, TimeUnit.SECONDS, new LinkedBlockingQueue<>(200));

    // 设置拒绝策略
    executorServices.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());

    Map<String, Object> queryMap = new HashMap<String, Object>();
    queryMap.put("shardingItem", shardingItem);
    queryMap.put("shardingTotalCount", shardingTotalCount);

    List<PreferProductPricePo> pricePos = preferProductPriceMapper.selectInfobyCustNumber(queryMap);
    try {

        for (int i = 0; i < pricePos.size(); i++) {
                final String number = pricePos.get(i).getCustNumber();
                executorServices.execute(() -> {
                    //System.out.println(Thread.currentThread().getName() + "-结果:" + number);
                    PreferProductPricePo preferProductPricePo = new PreferProductPricePo();
                    preferProductPricePo.setCustNumber(number);
                    List<PrefetProductPriceSenderInfoPo> prefetProductPriceSenderInfos = preferProductPriceMapper.selectInfobyCustNumberList(preferProductPricePo);
                    for (PrefetProductPriceSenderInfoPo productPriceSenderInfoPo : prefetProductPriceSenderInfos) {
                        System.out.println(number);
                        String custNumber = productPriceSenderInfoPo.getCustNumber();
                        String id = productPriceSenderInfoPo.getId().toString();
                        //cmcDiscountProducer.send(custNumber + id, JSONObject.toJSONString(productPriceSenderInfoPo));
                    }
                });
        }
    } catch (Exception e){
        e.printStackTrace();
    }finally {
        executorServices.shutdown();
    }
    System.out.println("线程执行结束");

}
写回答

1回答

悟空

2021-06-11

你说一直在运行是什么意思?如果线程池里的任务都完成了,线程池才能正常关闭。

0
2
悟空
回复
慕仰1794849
一直跑任务这没啥问题吧,这和业务逻辑有关。
2021-06-11
共2条回复

深度解密Java并发工具,精通JUC,成为并发多面手

JUC全方位讲解,构建并发工具类知识体系

1599 学习 · 573 问题

查看课程