相关问题
转场动画,谁有好的方案吗?
509浏览 • 1回复 待解决
本地收发消息实践,谁有好的方案?
540浏览 • 1回复 待解决
如何方便的测试分发,谁有好的方案?
639浏览 • 1回复 待解决
Grid实现单双列展示,谁有好的方案吗?
782浏览 • 1回复 待解决
屏幕旋转计算,有什么好的方案?
828浏览 • 1回复 待解决
Scroller的fling实现有什么好的方案
711浏览 • 1回复 待解决
har和hsp的转换,有好的方案吗?
595浏览 • 1回复 待解决
Text模拟隐私协议,有好的方案吗?
683浏览 • 1回复 待解决
连接网络信息获取有好的方案吗?
553浏览 • 1回复 待解决
HarmonyOS 中屏幕适配有什么好的方案?
36浏览 • 0回复 待解决
如何实现弹幕功能:实现弹幕功能的好的方案。
1013浏览 • 1回复 待解决
包大小优化,有没有好的解决方案?
79浏览 • 2回复 待解决
发布Hsp到私有仓库,有什么好的方案吗?
754浏览 • 1回复 待解决
跨moduel调用或者页面跳转有什么好的方案
233浏览 • 1回复 待解决
谁有办法关闭电池使用时间
5915浏览 • 1回复 待解决
鸿蒙小车的出厂固件谁有?
6004浏览 • 1回复 待解决
HarmonyOS 栏目编辑有什么好的方案或者库吗?
232浏览 • 1回复 待解决
HarmonyOS 中全局弹窗有什么好的落地方案?
77浏览 • 0回复 待解决
SM4 CBC模式加解密,有好的方案吗?
932浏览 • 1回复 待解决
调试运行的时候报错,有好的解决方案吗?
824浏览 • 0回复 待解决
订阅emitter分享,谁有更好的办法?
635浏览 • 1回复 待解决
这个iot板子的镜像谁有
8081浏览 • 1回复 已解决
HarmonyOS 主线程的内存数据,除了传递,还有什么好的方案提供给子线程使用吗?
290浏览 • 1回复 待解决
HarmonyOS taskpool使用crash
1285浏览 • 2回复 待解决
List滚动到底部提示,是否有好的解决方案?
888浏览 • 1回复 待解决
1 文件管理taskPool使用说明
1 实现继承BaseTask的线程类(类中要定义线程池名称)
2 调用TaskManager.getInstance().execute方法执行具体的线程。
具体例子参考 QueryFolderSubCountTask
使用场景:满足文件管理大部分使用场景,复杂的管理流程,建议也基于BaskTask去实现
Execute方法传参说明:
1) task:继承BaseTask的task类
2) maxRunningTask:该线程池同一时间内允许允许的线程个数
3) isOrder:线程池里面的任务是否按顺序执行,true先添加的先执行,false后添加的先执行
4) maxWaitLimit: 等待列表最大个数限制。如果未赋值,则对等待列表不限制,如果赋值了,isOrder为true,达到上限后,不在添加,isOrder为false,达到上限后,将前面的舍弃
5) taskMode:有三种模式用于满足不同场景:
A executeNow立刻执行:当前有空余线程时,会启动,没有则取消一个正在执行的任务(最早执行的),启动。使用场景:需要最新的执行结果
B executeReject 拒绝执行:当前有空余线程就执行,否则舍弃。使用场景:当前有一个任务执行即可
C execute 按顺序执行:可根据isOrderExecute值为true:先添加的先执行,false后添加的先执行,批量场景
2相关类的说明:
2.1 BaseTask 线程基类,后续所有线程类要继承该基类。
参数介绍:
1) task:具体待执行的任务
2) callback:线程执行完的回调,
3) priority:线程优先级
4) taskPoolName:线程池的名称,需要设置,否则会被添加到默认的线程池里去
5) cancelTask: 线程取消方法。
BaseTask子类:
业务后续根据不同的场景,实现BaseTask,并且在该文件类书写实际线程执行的@Concurrent修饰的方法,例子如下
2.2 TaskExecuteor线程池管理类
该类实现了简单的线程池管理方法。
三种线程执行策略:
1) executeNow立刻执行:当前有空余线程时,会启动,没有则取消一个正在执行的任务(最早执行的),启动。
2)executeReject 拒绝执行:当前有空余线程就执行,否则舍弃。使用场景:当前有一个任务执行即可
3)execute 按顺序执行:可根据isOrderExecute值为true:先添加的先执行,false后添加的先执行
主要参数:
TaskPoolName表示该线程池的名称。
MaxTaskRunningNum表示线程池最大允许同时运行的线程数
MaxWaitLimit:运行等待的最大任务数
isOrderExecutor: 是否按照顺序执行,true: 先添加的先执行,false:后添加的先执行
2.3 TaskManager文件管理封装的统一线程管理类
该类通过map管理一个个线程池,通过execute传进来的task找到相应的taskexecutor(如果没有则新建),然后将task丢给taskexecutor去执行,当线程池空闲时,从map中移除