鸿蒙开发笔记--TaskDispatcher

鸿蒙开发中多线程任务,是通过TaskDispatcher类来进行分发的。其中包括四种分发器:GlobalTaskDispatcher、ParallelTaskDispatcher、SerialTaskDispatcher、SpecTaskDispatcher。

  • GlobalTaskDispatcher
    全局并发任务分发器,一个应用只有一个实例,由Ability.getGlobalTaskDispatcher()获取。适用于任务之间没有联系的情况。
  • ParallelTaskDispatcher
    并发任务分发器,由Ability.createParallelTaskDispatcher()生成。与GlobalTaskDispatcher不同的是,ParallelTaskDispatcher不具有全局唯一性,可以创建多个。在创建或销毁dispatcher时,需要持有对应的对象引用。
  • SerialTaskDispatcher
    串行任务分发器,由Ability.createSerialTaskDispatcher()创建并返回。由该分发器分发的所有的任务都是按顺序执行,但是执行这些任务的线程并不是固定的。如果要执行并行任务,应使用ParallelTaskDispatcher或者GlobalTaskDispatcher,而不是创建多个SerialTaskDispatcher。如果任务之间没有依赖,应使用GlobalTaskDispatcher来实现。它的创建和销毁由开发者自己管理,开发者在使用期间需要持有该对象引用。
  • SpecTaskDispatcher
    专有任务分发器,绑定到专有线程上的任务分发器。目前已有的专有线程是主线程。UITaskDispatcher和MainTaskDispatcher都属于SpecTaskDispatcher。建议使用UITaskDispatcher。
    UITaskDispatcher:绑定到应用主线程的专有任务分发器, 由Ability.getUITaskDispatcher()创建并返回。 由该分发器分发的所有的任务都是在主线程上按顺序执行,它在应用程序结束时被销毁。

EventHandler
EventHandler是一种用户在当前线程上投递InnerEvent事件或者Runnable任务到异步线程上处理的机制。每一个EventHandler和指定的EventRunner所创建的新线程绑定,并且该新线程内部有一个事件队列。EventHandler可以投递指定的InnerEvent事件或Runnable任务到这个事件队列。EventRunner从事件队列里循环地取出事件,如果取出的事件是InnerEvent事件,将在EventRunner所在线程执行processEvent回调;如果取出的事件是Runnable任务,将在EventRunner所在线程执行Runnable的run回调。

总结:

1.TaskDispatcher是HarmonyOS中的多线程管理框架,通过适用它可以快速实现多任务耗时操作,而无需自己创建线程。
2.EventHandler是HarmonyOS中用于线程间通信的一种机制,类似于Android中的Handler。一个EventHandler只能和一个Eventrunner绑定,而一个EventRunner可以和多个EventHandler进行绑定,且主线程默认有一个EventRunner。子线程中执行完耗时操作后,可以适用主线程绑定的EventHandler对象通知主线程去进行操作,这样就实现了线程间的通信。

相关推荐
摇滚侠2 小时前
Java 零基础全套教程,File 类与 IO 流,笔记 177-178
java·开发语言·笔记
观浩2 小时前
使用Obsidian和IDEA搭建个人知识库
经验分享·笔记·学习方法
玄米乌龙茶1234 小时前
LLM成长笔记(十三):系统设计与项目实战
笔记·unity·游戏引擎
ai安歌5 小时前
鸿蒙PC:Qt适配OpenHarmony实战【取色间】:RGB 滑动调整、HEX 展示和颜色预览
qt·华为·harmonyos
searchforAI5 小时前
AI多模态技术:从语音识别到AI结构化笔记是怎么实现的
人工智能·经验分享·笔记·gpt·whisper·语音识别
lqj_本人5 小时前
鸿蒙electron跨端框架PC想法卡片实战:把零散灵感做成能继续展开的卡片流
华为·electron·harmonyos
凉、介6 小时前
深入理解 ARMv7-A|异常/中断处理
笔记·学习·嵌入式·arm
koo3646 小时前
周报5.24
笔记
专注前端30年6 小时前
2025-2026 大厂 Vue2Vue3 高频面试题 Top100
百度·华为·大厂面试题·阿里·前端vue2/3
玄米乌龙茶1237 小时前
LLM成长笔记(十一):模型部署与工程化
笔记