//List集合 final List<PlyDayList> plyVO = plyDayListDao.selectPlyDayListKey(dataSumNo,sd,tstate); if(plyVO != null && plyVO.size() > 0){ //創建一個線程池 try { int threadNum = 10;//線程數自定義 int threadSize = plyVO.size()/threadNum;//給每個線程分發處理條數(總條數/線程數); ExecutorService eService = Executors.newFixedThreadPool(threadNum);//創建線程池 List<Callable<String>> cList = new ArrayList<Callable<String>>(); Callable<String> task = null; List<PlyDayList> sList = null; for(int i=0;i<threadNum;i++){ if(i == threadNum - 1){ sList = plyVO.subList(i*threadSize, plyVO.size()); } else { sList = plyVO.subList(i*threadSize, (i+1)*threadSize); } final List<PlyDayList> nowList = sList; task = new Callable<String>() { @Override public String call() throws Exception { StringBuffer sb = new StringBuffer(); for(int j=0;j<nowList.size();j++){ //處理需要處理的業務 int s = plyDayService.nvhlInsuranceResponse(nowList.get(j)); sb.append(s+"_"); } //返回處理的結果集 return sb.toString(); } }; cList.add(task); } List<Future<String>> results; results = eService.invokeAll(cList); for(Future<String> str:results){ //打印結果集 log.info(str.get()); } eService.shutdown(); } catch (Exception e) { e.printStackTrace(); } }