App有这样一个场景:在进入一个页面的时候,需要创建一个线程,一直持有到页面销毁;页面操作期间,需要往这个线程提交多个Task,并且希望这些Task是按顺序同步执行的。
官方推荐并发有两种做法:
1、TaskPool,TaskPool目前是系统调度的,具体在哪个工作线程调度,无法感知,因此无法适用于场景。
2、Worker,目前看上去Worker是比较符合场景的实现的,但是由于Worker在调用的时候,需要将参数序列化以及反序列化,由于Task种类比较多,参数类型也比较复杂(可能存在多个封装的数据class),代码维护成本会比较高的同时,频繁序列化和反序列化也有可能带来性能问题,想请教下有没有更优的做法?
不管是TaskPool还是Worker,数据跨线程传递时都需要序列化。只要构建出可序列化的对象,传递时将会自动进行序列化和反序列化。TaskPool和Worker支持的序列化类型:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/serialization-support-types-V5