再识线程池

作者: 小鱼嘻嘻 | 来源:发表于2017-01-15 20:30 被阅读26次

剧情回顾:
上节主要讲了为什么要使用线程池,线程池的类型,线程池的类结构图。
本节主讲内容如下:
1 线程池ThreadPoolExecutor参数含义
首先了解一下ThreadPoolExecutor参数组成

4377DDED-B217-4B9B-86C9-2C92D1E96F90.png
int corePoolSize, //核心线程数量
int maximumPoolSize, //最大线程数量
long keepAliveTime, //存活时间
TimeUnit unit, //指明存活时间使用的单位
BlockingQueue<Runnable> workQueue, //阻塞队列
ThreadFactory threadFactory, //产生线程的工厂类 RejectedExecutionHandler handler //拒绝策略
corePoolSize就是我们配置的线程池中可以使用线程的数量,
maximumPoolSize是最大线程的数量,当阻塞队列已满的时候会判断是否超过最大线程数量
workQueue阻塞队列,当线程池中的线程的数量超过corePoolSize的数量的时候,就会将创建的新的线程加入到阻塞队列,这个阻塞队列默认的情况下是LinkedBlockingQueue有界队列,上界为int最大值,Cachethreadpool 用的不是LinkedBlockingQueue,而是synchronousblockingqueue
ThreadFactory这个就是一个线程的产生工厂无需多讲,
主要看一下RejectedExecutionHandler,这个就是所谓的拒绝策略,为什么又会这个呢?也就是阻塞队列满了的时候需要有个拒绝的策略,默认情况下是AbortPolicy抛出异常,还有其他的几种CallerRunsPolicy,DiscardPolicy,DiscardOldestPolicy分别的含义为:
CallerRunsPolicy:这个拒绝策略的做法是会暂停当前线程池中运行的任务,直接运行当前新建的任务。
DiscardPolicy:对新建的任务什么也不做直接丢弃,不会影响现在的线程池。
DiscardOldestPolicy:会将当前线程池阻塞队列对尾任务丢弃,然后将新建的任务加入队列
线程池处理流程图:
阻塞队列是否已满.png

2 线程池ThreadPoolExecutor类的组成成分


Paste_Image.png

主要包含了一个work,每一个work其实就是一个线程,并且work还extends AbstractQueuedSynchronizer因此有了锁的功能,所谓的线程池就是一个一个的work构成的一个hashset集合,还有 ReentrantLock mainLock 主要起到加锁的作用。
基本参数和组成部分就这些了。

相关文章

  • 再识线程池

    剧情回顾:上节主要讲了为什么要使用线程池,线程池的类型,线程池的类结构图。本节主讲内容如下:1 线程池Thread...

  • 线程池总结

    1 第一篇 初识线程池主要讲线程池的好处,线程池的分类,以及线程池的结构图2 第二篇 再识线程池通过线程池的构造函...

  • 线程池源码分析

    线程池源码分析 在线程池执行任务的时候,都是主线程(可能是tomcat线程),将任务放到线程池中,再执行线程池的e...

  • 重识 java 线程池

    一. 什么是线程池 线程池就是提前创建若干个线程, 如果有任务需要处理, 线程池里的线程就会处理任务. 处理完之后...

  • 线程池再探

    线程池源码之execute execute: 总体来说就是: 如果线程的数量小于线程池的核心线程数直接创建线程执行...

  • java线程池

    线程VS线程池 普通线程使用 创建线程池 执行任务 执行完毕,释放线程对象 线程池 创建线程池 拿线程池线程去执行...

  • Java并发编程之线程池必用知识点

    个人博客地址 http://dandanlove.com/ 再使用线程池之前,我们应该了解为什么需要使用线程池。进...

  • java----线程池

    什么是线程池 为什么要使用线程池 线程池的处理逻辑 如何使用线程池 如何合理配置线程池的大小 结语 什么是线程池 ...

  • Java线程池的使用

    线程类型: 固定线程 cached线程 定时线程 固定线程池使用 cache线程池使用 定时调度线程池使用

  • Spring Boot之ThreadPoolTaskExecut

    初始化线程池 corePoolSize 线程池维护线程的最少数量keepAliveSeconds 线程池维护线程...

网友评论

    本文标题:再识线程池

    本文链接:https://www.haomeiwen.com/subject/bvtubttx.html