线程池
# 1 简介
统一线程池管理提供线程使用生命周期管理,在用户使用完线程返回线程池时,统一会线程变量清理和资源回收等工作,在苍穹中使用新线程或线程池,需要使用线程池管理提供。
使用平台封装后的线程池会带来如下好处:
+ 统一管理和监控,比如监控总共创建了多少个线程,当前活动线程数。
+ 避免线程变量干扰,使用完线程返回线程池时,统一会线程变量清理和资源回收等工作。
+ 可传递requestcontext上下文到线程池线程中。
+ 相对jdk线程池做了更多优化,当线程池任务满时,不丢任务,更符合我们erp业务场景。
+ 做了限制,数据访问必须在被管理线程中运行,即线程池创建线程。
# 2 应用场景
在需要多线程的各个场景,线程池都适用。
# 3 接口说明
线程池相关接口定义和实现存在于bos-framework-1.0.jar中。对使用者来说只需通过kd.bos.threads.ThreadPools类的相关方法创建线程池,然后在调用返回的线程池对象的相关方法就可以执行多线程执行任务。
## 3.1 接口列表
***ThreadPools***
| 静态方法 | 说明 |
| - | - |
| executeOnce | 执行一次 |
| executeOnceIncludeRequestContext | 携带Request Context执行一次 |
| newCachedThreadPool | 创建可缓存线程池(返回ThreadPool接口) |
| newFixedThreadPool | 创建固定线程池(返回ThreadPool接口) |
| newCachedExecutorService | 创建可缓存线程池(返回jdk的ExecutorService接口) |
| newExecutorService | 创建固定线程池(返回jdk的ExecutorService接口) |
***ThreadPool***
| 接口方法 | 说明 |
| - | - |
| execute | 执行 |
| submit | 提交执行任务 |
| executeIncludeRequestContext | 携带上下文执行 |
| close | 创建固定线程池 |
# 4 注意事项
## 4.1 创建线程池
1. 不能创建相同名词的线程池。
2. 获取到的线程池需要全局性,如静态变量。
```java
private static ThreadPool pool = ThreadPools.newCachedThreadPool(“Cacal",3,30);
```
3. 有两类接口:newXxxThreadPool, newXxxExecutorService。newXxxThreadPool返回ThreadPool接口,可以携带RequestContext到线程池中的线程变量中。 newXxxExecutorService返回jdk的ExecutorService接口。
4. cache线程池创建建议明确指定最小线程数和最大线程数,最小线程数需要大于0,最大线程不能超过10000。
# 5 公众号文章
[为了这份线程池使用指南,我鸽了隔壁女神的约会](https://mp.weixin.qq.com/s/9w12xCsEGq_HnruWj_ywWw)
线程池
# 1 简介统一线程池管理提供线程使用生命周期管理,在用户使用完线程返回线程池时,统一会线程变量清理和资源回收等工作,在苍穹中使用新...
点击下载文档
本文2024-09-23 00:27:55发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-139632.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章