ExecutorService executorService = Executors.newFixedThreadPool(5); List<CancelApprovalCallable> callables = new List<>(); for(int i=0,len=idsArray.size();i<len;i++){ String id = idsArray.get(i); CancelApprovalCallable callable = new CancelApprovalCallable(id,domain); callables.add(callable); } List<Future<JSONObject>> resultList = new ArrayList<>(); try{ resultList = executorService.invokeAll(callables); }catch(InterruptedException e){ log.error("execute concurrent thread error",e); }finally{ if(!executorService.isShutdown() || !executorService.isTerminated()){ executorService.shutdown(); } } /** *批量获取线程执行结果,循环处理每条结果数据 */ for(Future<JSONObject> future : resultList){ JSONObject resp2 = null; try{ resp2 = future.get(); }catch(Exception e){ log.error("execute concurrent thread error",e); } if(resp2 == null){ continue; } }
class CancelApprovalCallable implements Callable<JSONbject>{ private String id; private String domain; CancelApprovalCallable(String id,String domain){ this.id=id; this.domain = domain; } /* (non-Javadoc) * @see java.util.concurrent.Callable#call() */ @Override public JSObject call() throws Exception { return null; } }