Posted on 2016-12-26 16:21
为自己代言 阅读(139)
评论(0) 编辑 收藏
import java.util.LinkedList;
import java.util.List;
import java.util.concurrent.*;
import java.util.concurrent.atomic.AtomicInteger;
/**
* Created by Administrator on 2016/12/26.
*/
public class Test {
public static void main(String[] args)throws Exception{
final AtomicInteger sum=new AtomicInteger(0);
ExecutorService executorService=Executors.newFixedThreadPool(4);
BlockingQueue<String> queue=new LinkedBlockingDeque<String>(200);
List<String> list=new LinkedList<String>();
list.add("1");
list.add("2");
list.add("3");
list.add("40");
queue.addAll(list);
final CountDownLatch cdOrder = new CountDownLatch(list.size());
for(int i=0 ; i< list.size() ; i++){
final String sql=queue.poll();
executorService.execute(new Runnable(){
@Override
public void run() {
System.out.println("线程" + Thread.currentThread().getName() +";"+sql);
cdOrder.countDown(); //任务执行完毕,返回给指挥官,cdAnswer减1。
sum.getAndAdd(Integer.parseInt(sql));
}
});
}
cdOrder.await(2000, TimeUnit.MILLISECONDS);//等待所有线程完成工作2秒内完工
executorService.shutdown(); //任务结束,停止线程池的所有线程
System.out.println(sum.get());
}
}