【KTips】如何为Job指定两个“parent“

本文讨论了Java中的Job类如何处理有多个候选parent的情况,通过`invokeOnCompletion`方法确保当parent任务结束或被取消时,子任务也随之停止执行。作者提供了一个示例并邀请读者分享其他解决方案。
摘要由CSDN通过智能技术生成

欢迎来到一分钟 KT Tips! 🎉

想必在日常生活中,大家总会遇到这样的苦恼:我有一个 Job ,但是它有两个“候选parent”。这可愁坏了我们亲爱的小job:

val pJob1: Job = Job()

fun createJob(pJob2: Job): Job {
   
    return Job(pJob1 还是 pJob2 ?)
}

如果我们希望不论是 pJob1 还是 pJob2 只要它们结束了、或者终止了,都会告诉我们的小job,也让它停下脚步,那么该怎么办呢?这时候,我们可以选择其中一个作为真正的 parent, 而其他人,则可以通过 invokeOnCompletion 来达到通知我们的小job的目的。

val pJob1: Job = Job()

fun createJob(pJob2: Job): Job {
    val job = Job(pJob2)
    pJob1.invokeOnCompletion { e -> 
        job.cancel(e?.let { CancellationException(it.message, it) })
    }
    
    return job
}

你学会了吗?如果有更好的办法也欢迎评论区补充喔~我们下次再见 ヾ(•ω•`)o

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值