zoukankan      html  css  js  c++  java
  • 线程池实现原理详解:

    线程池实现原理详解:

    ThreadPoolExecutor是线程池的实现类:

    [java] view plain copy
     
    1. public ThreadPoolExecutor(int corePoolSize,    
    2.                               int maximumPoolSize,    
    3.                               long keepAliveTime,    
    4.                               TimeUnit unit,    
    5.                               BlockingQueue<Runnable> workQueue,    
    6.                               ThreadFactory threadFactory,    
    7.                               RejectedExecutionHandler handler)     

    (1)corePoolSize(线程池的基本大小):当提交一个任务到线程池时,线程会创建一个线程来执行任务,即使其他空闲的基本线程能创建线程也会创建线程,等到到需要执行的任务数大于线程池基本大小corePoolSize时就不再创建。

    (2)maximumPoolSize(线程池最大大小):线程池允许最大线程数。如果阻塞队列满了,并且已经创建的线程数小于最大线程数,则线程池会再创建新的线程执行。因为线程池执行任务时是线程池基本大小满了,后续任务进入阻塞队列,阻塞队列满了,在创建线程。

    (3)keepAliveTime(线程活动保持时间):空闲线程的保持存活时间。
    (4)TimeUnit(线程活动保持时间的单位):

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

    (5)workQueue(任务队列):用于保存等待执行的任务的阻塞队列。一个阻塞队列,用来存储等待执行的任务:数组,链表,不存元素的阻塞队列

          5.1)ArrayBlockingQueue;数组结构的有界阻塞队列,先进先出FIFO
          5.2)LinkedBlockingQueue;链表结构的无界阻塞队列。先进先出FIFO排序元素,静态方法Executors.newFixe

  • 相关阅读:
    利用快慢指针快速得到链表中间节点
    idea编译golang插件总结
    Jquery复习(二)之stop()易忘点
    Jquery复习(一)之animate()易忘点
    doT学习(三)之实战
    doT学习(二)之用法集合
    doT学习(一)之语法
    npm学习(十二)之高级用法
    npm学习(十一)之package-lock.json
    npm学习(十)之如何使用创建、发布、使用作用域包
  • 原文地址:https://www.cnblogs.com/panxuejun/p/8630232.html
Copyright © 2011-2022 走看看