ThreadPool线程池的创建


public class ThreadPool {
    public static ThreadPool threadPool;
    Logger logger = LoggerFactory.getLogger(this.getClass());
    //ExecutorService executorService = Executors.newFixedThreadPool(10);
    // 核心线程
    int corePoolSize = 8;
    // 最大线程
    int maximumPoolSize = 30;
    // 线程空闲回收时间
    int keepAliveTime = 5;
    // 线程空闲回调时间单位
    TimeUnit unit = TimeUnit.SECONDS;
    // 队列大小
    int queueSize = 3200;
    //有界队列
    BlockingQueue workQueue = new ArrayBlockingQueue<Runnable>(queueSize);
   /* RejectedExecutionHandler handler = new RejectedExecutionHandler() {
        @Override
        public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) {
            if (!executor.isShutdown()){
                try {
                    executor.getQueue().put(r);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    };*/
    ExecutorService executorService = new ThreadPoolExecutor(corePoolSize,maximumPoolSize,
            keepAliveTime,unit,workQueue);
    public static ThreadPool getInstance() {
        if (threadPool == null) {
            threadPool = new ThreadPool();
        }
        return threadPool;
    }

    public void run(Runnable r) {
        executorService.execute(r);
    }
}
	public static ThreadPool threadPool;
	Logger logger = LoggerFactory.getLogger(this.getClass());
	ExecutorService executorService = Executors.newFixedThreadPool(10);

	public static ThreadPool getInstance() {
		if (threadPool == null) {
			threadPool = new ThreadPool();
		}
		return threadPool;
	}

	public void run(Runnable r) {
		executorService.execute(r);
	}
@Component
public class JxlHistoricaData{
    private final Logger logger = LoggerFactory.getLogger(JxlHistoricaDataProcess.class);
    @Autowired
    private IRiskOrdersDao riskOrdersDao;
    @Autowired
    private IRiskJxlBaseDataService riskJxlBaseDataService;
    //每页显示条数
    int PAGESIZE = 1000;
    public void ProcessData(){
        try {
            //总条数
            int orderCount = riskOrdersDao.selectRiskCount();
            /*AtomicInteger count = new AtomicInteger(0);*/
            CountDownLatch latch = new CountDownLatch(orderCount);
            //总页数
            int total = PageUtil.totalPage(orderCount, PAGESIZE);
            for (int i = 1; i <= total; i++) {
                PageHelper.startPage(i, PAGESIZE);
                List<RiskOrders> riskOrders = riskOrdersDao.selectRiskResult();
                riskOrders.forEach((riskOrder) -> {
                    ThreadPool.getInstance().run(new Runnable() {
                        @Override
                        public void run() {
                            try {
                                Thread.sleep(10);
                                String reqParams = riskOrder.getReqParams();
                                Map<String, Object> params = JSON.parseObject(reqParams, Map.class);
                                String userId = (null == params.get("userId") ? "" : params.get("userId").toString());
                                JxlRawCallsRequest request = new JxlRawCallsRequest();
                                request.setUserId(userId);
                                request.setCardNum(null == params.get("cardNum") ? "" : params.get("cardNum").toString());
                                request.setUserPhone(null == params.get("userPhone") ? "" : params.get("userPhone").toString());
                                request.setUserName(null == params.get("userName") ? "" : params.get("userName").toString());
                                request.setAct(ConstantRisk.JXL_RAW_CALLS);
                                request.setOrderType(ConstantRisk.JXL);
                                riskJxlBaseDataService.findRawCall(request);
                                /*if ("SUCCESS".equals("result")) {
                                    count.getAndIncrement();
                                }*/
                                latch.countDown(); // 执行完毕,计数器减1
                            } catch (Exception e) {
                                e.printStackTrace();
                            }
                        }
                    });
                });
            }
            try {
                latch.await(); // 主线程等待
            } catch (InterruptedException e) {
                e.printStackTrace();
            }

            /*if (count.get() == orderCount) {
                return SUCCESS;
            }*/
            logger.info("共处理聚信力报告数据"+orderCount+"条");
        }catch (Exception e){
            logger.error("处理聚信力报告数据异常=======》{}",e);
        }
    }
}
public static int totalPage(int totalCount, int pageSize) {
        if (pageSize == 0) {
            return 0;
        } else {
            return totalCount % pageSize == 0 ? totalCount / pageSize : totalCount / pageSize + 1;
        }
    }

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程治铭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值