JAVA分享篇(5)基础知识大总结

Executor框架-线程池

Executor框架体系是Java提供的一套原生的连接池实现,

咱们重点了解ThreadPoolExecutor线程池对象,使用线程池之后,不用频繁创建和销毁线程对象,单个线程对象可以重复为多个不同任务服务。线程池可以解决两个不同问题:由于不用重复创建线程对象为任务服务,减少了每个任务调用的开销,通常可以改进高并发异步任务时性能以及JVM的内存利用,并且还提供绑定和管理资源的方法。

ThreadPoolExecutor线程池核心组成

1、线程池对象的核心是持有一个阻塞队列BlockingQueue对象;

2、阻塞队列BlockingQueue核心任务控制工作任务Worker对象的数据结构的管理;

3、BlockingQueue接口分别提供了不同排队的策略;

4、工作任务Worker作为线程池类的内部类,在内部封装了Runnable任务线程对象;

四、ThreadPoolExecutor线程池类

在了解ThreadPoolExecutor线程池类时,重点了解线程池的执行原理,简单的理解就是在线程池中提供了可以为多任务重复服务的线程对象,详细了解线程池对象必须得理解构造线程池对象的核心要素。

核心要素:

1、corePoolSize:线程池核心线程数量

2、maximumPoolSize:线程池最大线程数量

3、keepAliveTime:多余线程最大存放时间

4、TimeUnit unit:参数keepAliveTime的时间单位

5、BlockingQueue<Runnable> workQueue:用于传输和保持提交的任务的队列

6、ThreadFactory threadFactory:线程工厂,创建新的线程

7、RejectedExecutionHandler handler:线程池拒绝处理任务时选择的策略

ThreadPoolExecutor.AbortPolicy:丢弃任务并抛出RejectedExecutionException异常。

ThreadPoolExecutor.DiscardPolicy:也是丢弃任务,但是不抛出异常。

ThreadPoolExecutor.DiscardOldestPolicy:丢弃队列最前面的任务,然后重新尝试执行任务

ThreadPoolExecutor.CallerRunsPolicy:由调用线程处理该任务

免责声明:部分文章信息来源于网络以及客户意见反馈,本站只负责对文章进行整理、排版、编辑,出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性,如本站文章和转稿涉及版权等问题,请作者在及时联系本站,我们会尽快联系您处理

相关新闻

QR code