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

相关推荐
hjxu20167 小时前
【OpenClaw 龙虾养成笔记一】在远程服务器,使用Docker安装OpenClaw
服务器·笔记·docker
sinat_255487817 小时前
读者、作家 Java集合学习笔记
java·笔记·学习
observe1018 小时前
输入输出1
笔记
坚果派·白晓明10 小时前
三方库ada
harmonyos·鸿蒙·openharmony
坚果派·白晓明10 小时前
三方库 nanomsg
华为·harmonyos
sanshanjianke11 小时前
AI辅助网文创作理论研究笔记(五):测试环境的搭建和一些问题的讨论
人工智能·笔记·ai写作
云边散步11 小时前
godot2D游戏教程系列二(18)
笔记·学习·游戏
C羊驼12 小时前
C语言:随机数
c语言·开发语言·经验分享·笔记·算法
風清掦12 小时前
【江科大STM32学习笔记-09】USART串口协议 - 9.1 STM32 USART串口外设
笔记·stm32·单片机·嵌入式硬件·学习
没头脑的男大12 小时前
华为笔试题练习
华为