主要说过程和核心参数  大概就是 : 默认情况,线程数为0, 此时来请求,则线程池new一个线程来执行, 如果 请求数大于了核心数值,根据参数来选择是否继续new线程,   直到线程数等于最大线程值; 此时在来任务,则压入到等待队列中,当等待队列满时,此时在来任务则会直接放弃;   当压力没有那么大时,线程池会回收线程数量直到 核心数 或者根据配置参数 可以达到0 corePoolSize: 核心池大小,默认情况下线程不会超过核心大小。 maximumPoolSize: 最大线程数, 当达到一定负载时,线程数会超过核心数,但始终小于最大线程数. 当负载较轻会回收线程至核心池数量 keepAliveTime: 表示线程没有任务执行时,的存活时间. 默认情况,当线程数大于核心小于最大数量时才会启用; 如果调用allowCoreThreadTimeOut(boolean)方法,线程数下界为0 unit:keepAliveTime的时间单位 workQueue: 阻塞队列,用来存储等待执行的任务。 一般很少使用abq和pbq,多用lbq和synchronousQueue.队列. abq: arrayBlockingQueue队列,基于数组的先进先出,创建时必须指定大小 pbq: PriorityBlockingQueue 优先级队列 lbq: linkedBlockingQueue,基于链表的队列,默认长度为Integer.MAX_VALUE synchronousQueue: 不保存任务,直接创建新线程 threadFactory:线程工厂 handler: 对拒绝任务的处理策略,四种参数. abortPolicy(丢弃任务并抛异常),discardPolicy(丢弃任务不抛异常),DiscardOldestPolicy(丢弃最前面的任务),callerRunsPolicy(交由调用线程处理) 线程池构造函数: 实际都是指向最后一个构造函数; workers: 工作集 allowCoreThreadTimeOut: 是否允许核心线程设置存活时间 poolSize: 线程池中当前线程数 largestPoolSize: 记录曾经出现过的最大线程数 completedTaskCount: 记录已经执行完的任务数
点赞 2

相关推荐

10-30 22:18
已编辑
毛坦厂中学 C++
点赞 评论 收藏
分享
今天 18:54
门头沟学院 Java
点赞 评论 收藏
分享
牛客网
牛客企业服务