1 import java.util.List; 2 import java.util.concurrent.CountDownLatch; 3 import java.util.concurrent.ExecutorService; 4 import java.util.concurrent.Executors; 5 6 public class BatchDownLoadNeLogByThread { 7 // 导入数据 8 public boolean importData(List<String> list) { 9 10 // 线程数 11 int RunSize =list.size(); 12 // 创建一个线程池 13 // ThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(RunSize); 14 ExecutorService executor = Executors.newCachedThreadPool(); 15 // ExecutorService executor = Executors.newSingleThreadExecutor(); 16 CountDownLatch countDownLatch = new CountDownLatch(RunSize); 17 try { 18 for (int i = 0; i < RunSize; i++) { 19 String newlist = list.get(i); 20 ImportTask task = new ImportTask(newlist, countDownLatch); 21 executor.execute(task); 22 } 23 countDownLatch.await();// 主线程等待所有线程完成任务 24 } catch (InterruptedException e) { 25 // TODO Auto-generated catch block 26 e.printStackTrace(); 27 return false; 28 } 29 // 所有线程完成任务后的一些业务 30 System.out.println("数据下载完成!"); 31 // 关闭线程池 32 executor.shutdown(); 33 return true; 34 35 } 36 37 class ImportTask implements Runnable { 38 private String newNe; 39 private CountDownLatch countDownLatch; 40 41 public ImportTask( String newNe, CountDownLatch countDownLatch) { 42 this.newNe = newNe; 43 this.countDownLatch = countDownLatch; 44 } 45 46 @Override 47 public void run() { 48 boolean flag1 = false; 49 try { 50 51 if (newNe != null) { 52 // 业务逻辑 53 54 } 55 } catch (Exception e) { 56 // TODO Auto-generated catch block 57 e.printStackTrace(); 58 }finally{ 59 countDownLatch.countDown();// 发出线程任务完成的信号 60 } 61 62 } 63 } 64 65 }