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总结:

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

  • 相关阅读:
    教你一招用 IDE 编程提升效率的骚操作!
    动态拼接sql语句工具类
    mysql数据建模规范
    分割字符串为数字列表
    linux 配置mysql odbc
    nodejs npm常用命令
    (四)jquery easyui panel window使用
    (三)jquery easyui常用form控件的使用
    (二)jquery easyUI提示框的使用
    (一)jQuery easyUI 环境的搭建
  • 原文地址:https://www.cnblogs.com/LuoPengSdok/p/11453359.html
Copyright © 2011-2022 走看看