Java线程池Executor如何深入理解其工作原理?
- 内容介绍
- 文章标签
- 相关推荐
本文共计3105个文字,预计阅读时间需要13分钟。
线程池类图+我们最常用的Executors实现创建线程池使用线程主要目的是利用上述类图中提供的类。在上面的类图中,包含了一个Executor框架,它是一个基于一组执行策略的调度执行和控制框架。
线程池类图
我们最常使用的Executors实现创建线程池使用线程主要是用上述类图中提供的类。在上边的类图中,包含了一个Executor框架,它是一个根据一组执行策略的调用调度执行和控制异步任务的框架,目的是提供一种将任务提交与任务如何运行分离开的机制。它包含了三个executor接口:
- Executor:运行新任务的简单接口
- ExecutorService:扩展了Executor,添加了用来管理执行器生命周期和任务生命周期的方法
-
ScheduleExcutorService:扩展了ExecutorService,支持Future和定期执行任务
线程池的好处
- 降低资源消耗-重用存在的线程,减少对象创建、消亡的开销,性能好
- 提高响应速度 -可有效控制最大并发线程数,提高系统资源利用率,同时可以避免过多资源竞争,避免阻塞。当任务到达时,任务可不用等待线程创建就能立即执行
-
提高线程的可管理性-提供定时执行、定期执行、单线程、并发数控制等功能。
new Thread的弊端
- 每次new Thread 新建对象,性能差
- 线程缺乏统一管理,可能无限制的新建线程,相互竞争,可能占用过多的系统资源导致死机或者OOM(out of memory 内存溢出),这种问题的原因不是因为单纯的new一个Thread,而是可能因为程序的bug或者设计上的缺陷导致不断new Thread造成的。
本文共计3105个文字,预计阅读时间需要13分钟。
线程池类图+我们最常用的Executors实现创建线程池使用线程主要目的是利用上述类图中提供的类。在上面的类图中,包含了一个Executor框架,它是一个基于一组执行策略的调度执行和控制框架。
线程池类图
我们最常使用的Executors实现创建线程池使用线程主要是用上述类图中提供的类。在上边的类图中,包含了一个Executor框架,它是一个根据一组执行策略的调用调度执行和控制异步任务的框架,目的是提供一种将任务提交与任务如何运行分离开的机制。它包含了三个executor接口:
- Executor:运行新任务的简单接口
- ExecutorService:扩展了Executor,添加了用来管理执行器生命周期和任务生命周期的方法
-
ScheduleExcutorService:扩展了ExecutorService,支持Future和定期执行任务
线程池的好处
- 降低资源消耗-重用存在的线程,减少对象创建、消亡的开销,性能好
- 提高响应速度 -可有效控制最大并发线程数,提高系统资源利用率,同时可以避免过多资源竞争,避免阻塞。当任务到达时,任务可不用等待线程创建就能立即执行
-
提高线程的可管理性-提供定时执行、定期执行、单线程、并发数控制等功能。
new Thread的弊端
- 每次new Thread 新建对象,性能差
- 线程缺乏统一管理,可能无限制的新建线程,相互竞争,可能占用过多的系统资源导致死机或者OOM(out of memory 内存溢出),这种问题的原因不是因为单纯的new一个Thread,而是可能因为程序的bug或者设计上的缺陷导致不断new Thread造成的。

