大学网站建设包括哪些课程娱乐网站设计SEO
2026/4/18 11:52:28 网站建设 项目流程
大学网站建设包括哪些课程,娱乐网站设计SEO,wordpress 网站备案号,去哪个网站做农产品推广一、背景在鸿蒙开发中提供了两种多线程并发方案#xff0c;分别是TaskPool与Worker#xff0c;此篇文章主要总结下TaskPool二、TaskPool概念1、TaskPool是为应用提供多线程运行环境#xff0c;旨在降低资源消耗并提升系统性能2、开发者无需关心线程的生命周期#xff0c;由…一、背景在鸿蒙开发中提供了两种多线程并发方案分别是TaskPool与Worker此篇文章主要总结下TaskPool二、TaskPool概念1、TaskPool是为应用提供多线程运行环境旨在降低资源消耗并提升系统性能2、开发者无需关心线程的生命周期由系统统一管理线程的创建、调度和销毁三、怎么用使用TaskPool流程定义任务 → 提交任务 → 处理结果 → 取消任务可选步骤一定义耗时任务必须用 Concurrent 标记所有提交到 TaskPool 的耗时函数必须通过Concurrent装饰器标记——这是鸿蒙的强制要求用于告知系统“该函数是耗时任务需在后台线程执行”。注意该函数需满足「无状态、参数可序列化」不能直接操作 UI如修改 State 变量、调用 UI 组件方法。Concurrent function computeTask(a: number, b: number): number { let start Date.now(); while (Date.now() - start 2000) { } // 阻塞2秒后台线程不影响UI return a b; }步骤二、提交任务处理结果创建 Task 实例将函数和参数包装起来提交到任务池执行并等待 Promise 返回的结果export class taskpoolUtils { private static instance: taskpoolUtils | undefined; public static getInstance(): taskpoolUtils { if (!taskpoolUtils.instance) { taskpoolUtils.instance new taskpoolUtils(); } return taskpoolUtils.instance; } async runConcurrentTask() { try { // 1. 同步创建Task实例 const task: taskpool.Task new taskpool.Task(computeTask, 10, 20); // 2. 提交任务到后台线程 const result await taskpool.execute(task); console.log(lucy 计算结果result, result); // 2秒后打印30 } catch (err) { // 捕获任务执行异常 console.error(lucy 任务执行失败, JSON.stringify(err)); } } }最终效果执行import { ScreenUtils } from ../utils/ScreenUtils; import { taskpoolUtils } from ../utils/taskpoolUtils Entry Component struct Index { private globalNavStack: NavPathStack new NavPathStack(); //UI状态验证taskpool不阻塞UI State uiText: string 未执行任务; build() { Column() { Navigation(this.globalNavStack) { // 显示UI状态验证是否阻塞 Text(this.uiText).fontSize(20).margin(20); Button(跳转到login组件执行耗时任务) .onClick(() { // 1. 先更新UI验证UI线程没被阻塞 this.uiText 任务执行中...; // 2. 跳转页面UI操作 this.globalNavStack.pushPathByName(loginPage, null, false); // 3. 执行taskpool耗时任务 taskpoolUtils.getInstance().runConcurrentTask().then(() { // 任务完成后更新UI this.uiText 任务执行完成; }); // 4. 验证任务执行中UI仍能响应立即打印不会等2秒 console.log(lucy UI线程未阻塞立即执行); }) } .height(100%) .width(100%) .padding({ top: ScreenUtils.getInstance().getStatusBarHeight() }) } } }四、适用场景短耗时任务执行时间建议 ≤ 5 秒如缓存检查、MD5 校验、小型数据计算、接口参数加密无状态任务任务执行不依赖外部状态多次执行结果一致如相同参数的 MD5 计算结果始终相同高并发任务需要同时执行多个独立任务如批量下载多个小插件的前置检查优先级敏感任务不同任务有优先级差异如用户主动触发的下载 后台自动更新。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询