zoukankan      html  css  js  c++  java
  • 创建线程池

    public ThreadPoolExecutor(int corePoolSize,
                                  int maximumPoolSize,
                                  long keepAliveTime,
                                  TimeUnit unit,
                                  BlockingQueue<Runnable> workQueue) {
            this(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue,
                 Executors.defaultThreadFactory(), defaultHandler);
        }

    corePoolSize:核心池的大小

    maximumPoolSize:线程池最大线程数,这个参数也是一个非常重要的参数,它表示在线程池中最多能创建多少个线程;

    keepAliveTime:表示线程没有任务执行时最多保持多久时间会终止。默认情况下,只有当线程池中的线程数大于corePoolSize时,keepAliveTime才会起作用,直到线程池中的线程数不大于corePoolSize,即当线程池中的线程数大于corePoolSize时,如果一个线程空闲的时间达到keepAliveTime,则会终止,直到线程池中的线程数不超过corePoolSize。但是如果调用了allowCoreThreadTimeOut(boolean)方法,在线程池中的线程数不大于corePoolSize时,keepAliveTime参数也会起作用,直到线程池中的线程数为0;

    unit:参数keepAliveTime的时间单位,有7种取值,在TimeUnit类中有7种静态属性:

    TimeUnit.DAYS;           //天
    TimeUnit.HOURS;          //小时
    TimeUnit.MINUTES;         //分钟
    TimeUnit.SECONDS;         //秒
    TimeUnit.MILLISECONDS;      //毫秒
    TimeUnit.MICROSECONDS;      //微妙
    TimeUnit.NANOSECONDS;      //纳秒

    workQueue:一个阻塞队列,用来存储等待执行的任务,这个参数的选择也很重要,会对线程池的运行过程产生重大影响,一般来说,这里的阻塞队列有以下几种选择:

    ArrayBlockingQueue;
    LinkedBlockingQueue;
    SynchronousQueue;
    例如  BlockingQueue<Runnable> queue = new ArrayBlockingQueue<>(10); 需要指定大小
        LinkedBlockingQueue<Runnable> queue=new LinkedBlockingQueue<Runnable>();
     
    public class ThreadPoolTest {
            public static void main(String[] args) {
                //BlockingQueue<Runnable> queue = new ArrayBlockingQueue<>(10);
                   LinkedBlockingQueue<Runnable> queue=new LinkedBlockingQueue<Runnable>();
                    ThreadPoolExecutor pool = new ThreadPoolExecutor(2, 5, 60, TimeUnit.MICROSECONDS, queue);
                    
                    for (int i=0; i<7; i++){
                        Runnable task = new RunnableThreadTest();
                        pool.execute(task);
                    }
                    
                    pool.shutdown();
            }
    }
     
     
  • 相关阅读:
    软件测试之po设计模式
    Python_标识符及命名规范
    python基础(第一个python程序)
    计算机基础知识
    注册界面测试案例
    vscode使用-添加格式化插件
    工作-提交review失败
    工作-大首页走测试环境
    jquery--选择器 第几
    a标签href无值,点击刷新页面解决办法
  • 原文地址:https://www.cnblogs.com/bug1024/p/9100314.html
Copyright © 2011-2022 走看看