//数据库中的100条数据;List list =newArrayList();for(int i =0; i <100; i++){
list.add(i);}//Executors创建线程池new固定的10个线程ExecutorService taskExecutor =Executors.newCachedThreadPool();finalCountDownLatch latch =newCountDownLatch(list.size());//用于判断所有的线程是否结束System.out.println("个数=="+list.size());for(int m =0; m < list.size(); m++){finalint n = m;//内部类里m不能直接用,所以赋值给nRunnable run =newRunnable(){publicvoidrun(){try{System.out.println("我在执行="+n);}finally{
latch.countDown();//每次调用CountDown(),计数减1}}};
taskExecutor.execute(run);//开启线程执行池中的任务。还有一个方法submit也可以做到,它的功能是提交指定的任务去执行并且返回Future对象,即执行的结果}try{//等待所有线程执行完毕
latch.await();//主程序执行到await()函数会阻塞等待线程的执行,直到计数为0}catch(InterruptedException e){
e.printStackTrace();}
taskExecutor.shutdown();//关闭线程池//所有线程执行完毕,执行主线程}