zoukankan      html  css  js  c++  java
  • 使用线程池和不使用线程池的区别

    目的:随机产生一个整数并加入到一个队列中。

    1.使用线程池:

     long startTime=System.currentMillis();

     final List<Integer> l=new LinkedList<Integer>();

     ThreadPoolExecutor tp=new ThreadPoolExecutor(1,1,60,TimrUnit,SECONDS,new LinkedBlockingQueue<Runnable>(count));

     final Random random=new Random();

     for(int i=0;i<count;i++){

       tp.executor(new Runnable(){

        @Override

        Public void run(){

          l.add(random.nextInt());

        }

      });

      }

    tp.shutdown();

    try(){

      tp.awaitTermination(1,TimeUnit.DAYS);

    }catch(InterruptedException e){

      e.printStactTrace();

    }

    System.out.println(System.currentTimeMillis()-startTime);

    System.out.println(l.size());

    2.不使用线程池

    long startTime=System.currentMillis();
    final List<Integer> l=new LinkedList<Integer>();

    final Random random=new Random();

     for(int i=0;i<count;i++){

       Thread thread=new Thread(){

        @Override

        Public void run(){

          l.add(random.nextInt());

        }

      });

      thread.start();

      try{

       thread.join(); 

      }catch(InterruptedException e){

        e.printStackTrace();

      }

      }

    System.out.println(System.currentTimeMillis()-startTime);

    System.out.println(l.size);

    3总结:

      差异在于使用线程池的方式是复用线程,不使用线程池的方式是每次都要创建线程。所以消耗的时间差距大,因为执行的工作比较简单所以大部分时间用来创建线程。

  • 相关阅读:
    查看JVM使用的默认的垃圾收集器
    生产环境mysql的参数设置不一样,好好的程序,又出错
    伤秦姝行
    《道德经》全文——马王堆出土帛书版
    100篇锻炼口才表达能力的绕口令
    《道德经》部分
    40篇英语短文搞定3500个单词
    python浮点数与整数间的转化
    理解微积分
    matlab判断某个变量是否存在
  • 原文地址:https://www.cnblogs.com/LuoPengSdok/p/11453359.html
Copyright © 2011-2022 走看看