Harmonyos之TaskPool浅学

HarmonyOS中TaskPool的使用介绍

概述

在开发过程中,多线程是我们非常常见的一种技术。

当前ArkTS提供了TaskPoolWorker两种并发能力,下面 我们来探索下TaskPool的使用方式。

参考链接:

多线程并发

TaskPool任务启动迟

TaskPool的使用

延时任务(executeDelayed)

官方API:

// delayTime: 延时时间 单位毫秒
// task: 需要延时执行的任务
// priority: 延时执行任务的优先级
executeDelayed(delayTime: number, task: Task, priority?: Priority): Promise<Object>
  • 无参数、无返回值延时任务
delayedTask() {
   
   
    console.log('START====================' + DateUtil.getFormatDateStr(new Date()))
    //1. 首先我们需要创建一个延时任务
    //Task表示任务, 必须要使用concurrent方法来构造Task, 也就是使用@Concurrent修饰的函数
    const delayedTask = new taskpool.Task(delayedFunc)
    // 执行这个延时任务
    taskpool.executeDelayed(2000, delayedTask, taskpool.Priority.HIGH).then((res) => {
   
   
      console.log('END====================' + DateUtil.getFormatDateStr(new Date()))
    })
  }

// 延时任务函数
@Concurrent
function delayedFunc(): void {
   
   
  console.log('delayedFunc =================被执行')
}

输出结果:
在这里插入图片描述

  • 有参数、有返回值的延时任务
delayedTaskParam() {
   
   
    console.log('START====================' + DateUtil.getFormatDateStr(new Date()))
    //1. 首先我们需要创建一个延时任务
    //Task表示任务, 必须要使用concurrent方法来构造Task, 也就是使用@Concurrent修饰的函数
    const delayedTask = new taskpool.Task(delayedFundParam, 100, 200)
    // 执行这个延时任务
    // 其实除了通过.then方法获取返回值时, Arkts还提供了另外一种方式:onReceiveData, 注册回调的方式来接受值,需要再任务执行函数中调用taskpool.Task.sendData(xxx); 可以参考官方文档。
    taskpool.executeDelayed(2000, delayedTask, taskpool.Priority.HIGH).then((res) => {
   
   
    // res是task任务执行后的结果
      console.log("res=======================" + JSON.stringify(res))
      console.log('END====================' + DateUtil.getFormatDateStr(new Date()))
    })
  }
  

// 延时执行函数
@Concurrent
function delayedFundParam(a: 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值