采用并发类中锁的特性完成
int num = 5;//并发执行的数量 ConcurrentLinkedQueue<Future<DataVo>> linkedQueue = new ConcurrentLinkedQueue<>(); CountDownLatch cancelDownLatch = new CountDownLatch(num); //线程池-创建 ThreadFactory threadFactory = new ThreadFactoryBuilder() .setDaemon(true) .build(); ExecutorService executor = Executors.newFixedThreadPool(num, threadFactory); for (int i = 0; i < num; i++) { linkedQueue.add(executor.submit( new Callable<DataVo>() { @Override public DataVo call() throws Exception { //请求接口并得到返回值 DataVo dataVo = OutService.sendInfo(param1); cancelDownLatch.countDown(); return dataVo; } } )); } executor.shutdown(); try { executor.awaitTermination(5000, TimeUnit.MILLISECONDS); } catch (Exception e) { logger.error("dispatchMoreCoupon 线程池关闭失败", e); } cancelDownLatch.await();
可实现并发执行多个接口,仅供参考