创建一个线程池(java)
private ThreadFactory threadFactory = new ThreadFactoryBuilder().setNameFormat("billService-pool-%d").build();
private final ExecutorService pool = new ThreadPoolExecutor(20, 20,0L, TimeUnit.MILLISECONDS,new LinkedBlockingQueue<Runnable>(512),threadFactory);
//解析实例:
final CountDownLatch countDownLatch = new CountDownLatch(billUploadHistory.size());//线程统计 for (BillUpload billUpload : billUploadHistory) { pool.execute(new Runnable() { @Override public void run() { PaybillParser parseService = null; if (EnumTypeOfInt.PAY_CHANNEL_WECHAT.getValue().equals(billUpload.getPayChannel())) { parseService = new WeixinPaybillParser(billUpload, logId); } else if (EnumTypeOfInt.PAY_CHANNEL_ALIPAY.getValue().equals(billUpload.getPayChannel())) { parseService = new AliPaybillParser(billUpload, logId); } if (parseService != null) { try { parseService.parse(); } catch (Exception e) { e.printStackTrace(); } finally { countDownLatch.countDown();//线程减1 } } } }); } try { countDownLatch.await();//阻塞直到计数器为0 } catch (InterruptedException e) { e.printStackTrace(); }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步