Java并发之线程池并发之线程池Executor框架的深入理解框架的深入理解
主要介绍了Java并发之线程池Executor框架的深入理解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看
看吧
线程池线程池
无限制的创建线程
若采用"为每个任务分配一个线程"的方式会存在一些缺陷,尤其是当需要创建大量线程时:
线程生命周期的开销非常高
资源消耗
稳定性
引入线程池引入线程池
任务是一组逻辑工作单元,线程则是使任务异步执行的机制。当存在大量并发任务时,创建、销毁线程需要很大的开销,运用线程池可以大大减小开销。
Executor框架框架
说明:
Executor 执行器接口,该接口定义执行Runnable任务的方式。
ExecutorService 该接口定义提供对Executor的服务。
ScheduledExecutorService 定时调度接口。
AbstractExecutorService 执行框架抽象类。
ThreadPoolExecutor JDK中线程池的具体实现。
Executors 线程池工厂类。
ThreadPoolExecutor线程池类线程池类
线程池是一个复杂的任务调度工具,它涉及到任务、线程池等的生命周期问题。要配置一个线程池是比较复杂的,尤其是对于线程池的原理不是很清楚的情
况下,很有可能配置的线程池不是较优的。
JDK中的线程池均由ThreadPoolExecutor类实现。其构造方法如下:
参数说明:
corePoolSize:核心线程数。
maximumPoolSize:最大线程数。
keepAliveTime:线程存活时间。当线程数大于core数,那么超过该时间的线程将会被终结。
unit:keepAliveTime的单位。java.util.concurrent.TimeUnit类存在静态静态属性:NANOSECONDS、MICROSECONDS、MILLISECONDS、
SECONDS
workQueue:Runnable的阻塞队列。若线程池已经被占满,则该队列用于存放无法再放入线程池中的Runnable。
另一个构造方法:
复制代码 代码如下:
ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit,BlockingQueue<Runnable> workQueue,
RejectedExecutionHandler handler)