posts - 22, comments - 32, trackbacks - 0, articles - 71
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

JAVA 多线程小例子

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());
    }
}

只有注册用户登录后才能发表评论。


网站导航: