鸿蒙系统 线程 相关常用知识点小结( Java 版本)
1. 不可以在非UI主线程中更新UI元素
l 鸿蒙系统的线程管理跟Android类似,分为UI主线程和非主线程。在启动应用时,系统会为该应用创建一个称为“主线程”的执行线程。该线程随着应用创建或消失,是应用的核心线程。UI界面的显示和更新等操作,都是在主线程上进行。主线程又称UI线程,默认情况下,所有的操作都是在主线程上执行。如果需要执行比较耗时的任务(如下载文件、查询数据库),可创建其他线程来处理。
2. 任务优先级分3个级别
l HIGH:最高任务优先级,比默认优先级、低优先级的任务有更高的几率得到执行。
l DEFAULT:默认任务优先级, 比低优先级的任务有更高的几率得到执行。
l LOW:低任务优先级,比高优先级、默认优先级的任务有更低的几率得到执行。
3. 线程管理相关的知识点:任务派发、取消方式
l syncDispatch同步派发任务:派发任务并在当前线程等待任务执行完成。在返回前,当前线程会被阻塞。
l asyncDispatch异步派发任务:派发任务,并立即返回,返回值是一个可用于取消任务的接口。
l delayDispatch异步延迟派发任务:异步执行,函数立即返回,内部会在延时指定时间后将任务派发到相应队列中。
l Group任务组:表示一组任务,且该组任务之间有一定的联系,由TaskDispatcher执行createDispatchGroup创建并返回。
l Revocable取消任务:Revocable是取消一个异步任务的接口。
l syncDispatchBarrier同步设置屏障任务:在任务组上设立任务执行屏障,同步等待任务组中的所有任务执行完成,再执行指定任务。
l asyncDispatchBarrier:异步设置屏障任务:在任务组上设立任务执行屏障后直接返回,指定任务将在任务组中的所有任务执行完成后再执行。
l applyDispatch:执行多次任务:对指定任务执行多次。
4. 线程间通讯常用方式
l EventHandler:可以通过EventRunner创建新线程,将耗时的操作放到新线程上执行。这样既不阻塞原来的线程,任务又可以得到合理的处理。
5. EventRunner工作模式
l 托管模式(默认模式):不需要开发者调用run()和stop()方法去启动和停止EventRunner。
u 示例:
u EventRunner runnerA = EventRunner.create(“runner1”); // 内部会新建线程
l 手动模式:需要开发者自行调用EventRunner的run()方法和stop()方法来确保线程的启动和停止。
u 示例:
u runnerA = EventRunner.create( false );
u runnerA.run();