鸿蒙开发笔记--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对象通知主线程去进行操作,这样就实现了线程间的通信。

相关推荐
冷雨夜中漫步6 小时前
Python快速入门(6)——for/if/while语句
开发语言·经验分享·笔记·python
盐焗西兰花7 小时前
鸿蒙学习实战之路-Reader Kit修改翻页方式字体大小及行间距最佳实践
学习·华为·harmonyos
Gain_chance8 小时前
34-学习笔记尚硅谷数仓搭建-DWS层最近一日汇总表建表语句汇总
数据仓库·hive·笔记·学习·datagrip
Gain_chance9 小时前
36-学习笔记尚硅谷数仓搭建-DWS层数据装载脚本
大数据·数据仓库·笔记·学习
肖永威10 小时前
macOS环境安装/卸载python实践笔记
笔记·python·macos
暗光之痕10 小时前
Unreal5研究笔记 Actor的生命周期函数
笔记·unreal engine
Gain_chance10 小时前
35-学习笔记尚硅谷数仓搭建-DWS层最近n日汇总表及历史至今汇总表建表语句
数据库·数据仓库·hive·笔记·学习
宵时待雨11 小时前
STM32笔记归纳9:定时器
笔记·stm32·单片机·嵌入式硬件
m0_7190841111 小时前
React笔记张天禹
前端·笔记·react.js
lbb 小魔仙11 小时前
【HarmonyOS实战】React Native 表单实战:在 OpenHarmony 上构建高性能表单
react native·华为·harmonyos