Java从入门到放弃

线程池的主要作用

线程池的设计主要是为了管理线程,为了让用户不需要再关系线程的创建和销毁,只需要使用线程池中的线程即可。

同时线程池的出现也为性能的提升做出了很多贡献:

  1. 降低了资源的消耗:不会频繁的创建、销毁线程,线程池中的线程随取随用。
  2. 提高了相应速度:因为线程是已经创建好的线程,所以减少了线程创建的时间。
  3. 提高了线程的可管理性:线程是稀缺资源不能无限制的创建,使用线程池使得线程的数量是可控的。即=
  4. 提供了更强大的功能:线程池还提供了一些功能,比如定时执行、延迟执行、线程存活时间等。

线程池的实现

线程池的实现类是 ThreadPoolExecutor,它的继承性UML类图如下:


顶层接口Executor提供了一种思想:将任务提交和任务执行进行解耦,用户无需关心如何创建线程,如何调度线程来执行任务,用户只需提供Runnable对象,将任务的运行逻辑提交到执行器中,由Executor框架完成线程的调配和任务的执行部分。

ExecutorSevice增加了一些能力:

  1. 扩充执行任务的能力,补充可以为一个或一批异步任务生成Future的方法
  2. 提供管控线程池的方法,比如停止线程池的运行。

AbstractExecutorService将执行任务的流程串联了起来,保证下层的实现只需关注一个执行任务的方法即可。

ThreadPoolExecutor将会一方面维护自身的生命周期,另一方面同时管理线程和任务,是两者良好的结合从而执行并行任务。

to be continue2024年6月9日10:20:02

相关推荐
Thanwind3 小时前
大二上结束随笔
java
keyborad pianist3 小时前
Web开发 Day1
开发语言·前端·css·vue.js·前端框架
坚持就完事了3 小时前
Python的类型注解
开发语言·python
wjs20244 小时前
HTML URL 编码
开发语言
wjs20244 小时前
Lua 循环
开发语言
Evand J4 小时前
matlab GUI制作界面的一些笔记(入门)
开发语言·笔记·matlab
我是大猴子4 小时前
Java面经
java·开发语言
Never_Satisfied4 小时前
在c#中,如何删除字符串中的第x个字符
开发语言·c#
_nirvana_w_4 小时前
Qt项目链接库时遇到的坑:-l选项的正确用法
开发语言·c++·qt·qt框架·elawidgettools
froginwe114 小时前
数据访问对象模式(Data Access Object Pattern)
开发语言