java多线程并行操作
public Map<String, Object> myTrainListDatasTotalCount(HttpServletRequest request) { Map<String, Object> attributes = new HashMap<String, Object>(); BaseInfoEntity baseInfo = this.getBaseInfo(request); //通过多个线程并查询 ExecutorService service = Executors.newFixedThreadPool(3); //创建线程池 BlockingQueue<Future<String[]>> queue = new LinkedBlockingQueue<Future<String[]>>(); //创建队列 Future<String[]> future = service.submit(this.getWholeMyTrainListCount(baseInfo,null,"all")); queue.add(future); Future<String[]> future1 = service.submit(this.getWholeMyTrainListCount(baseInfo,null,"wait")); queue.add(future1); Future<String[]> future2 = service.submit(this.getWholeMyTrainListCount(baseInfo,null,"complete")); queue.add(future2); int queueSize = queue.size(); for (int i = 0; i < queueSize; i++) { try { String[] str = queue.take().get(); //结果处理过程 } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } } service.shutdown(); return attributes; } public Callable<String[]> getWholeMyTrainListCount(final BaseInfoEntity baseInfo,final WeixPageBean weixPageBean,final String type) { //传递的参数都需要使用final修饰 Callable<String[]> callable = new Callable<String[]>() { public String[] call() throws Exception { String[] str = new String[2]; //处理过程 return str; } }; return callable; }