当前位置: 首页 > news >正文

Kotlin cancel CoroutineScope.launch的任务后仍运行

Kotlin cancel CoroutineScope.launch的任务后仍运行

 

import kotlinx.coroutines.*fun main() {runBlocking {val coroutineScope = CoroutineScope(Dispatchers.IO)val job = coroutineScope.launch {var i = 0while (i < Int.MAX_VALUE) {i++println(i)}}// 2ms 取消协程delay(2)println("cancel...")job.cancel()coroutineScope.cancel()println("cancel!")}
}

 

...

 

997
998
999
cancel!
1000
1001
1002

 

...

加上 coroutineScope.isActive,控制while循环。

import kotlinx.coroutines.*fun main() {runBlocking {val coroutineScope = CoroutineScope(Dispatchers.IO)val job = coroutineScope.launch {var i = 0while (i < Int.MAX_VALUE && coroutineScope.isActive) {i++println(i)}}// 2ms 取消协程delay(2)println("cancel...")job.cancel()coroutineScope.cancel()println("cancel!")}
}

 

...

 

598
599
600
cancel!

Process finished with exit code 0

 

也可以加上:

yield()

控制:

import kotlinx.coroutines.*fun main() {runBlocking {val coroutineScope = CoroutineScope(Dispatchers.IO)val job = coroutineScope.launch {var i = 0while (i < Int.MAX_VALUE) {yield()i++println(i)}}// 2ms 取消协程delay(2)println("cancel...")job.cancel()coroutineScope.cancel()println("cancel!")}
}

...

 

108
109
110
cancel!

 

 

 

 

b2fd91bb8f6d48669f9a9b45ef3de131.png

 

 

 

 

kotlin协程Job、CoroutineScope作用域,Android_kotlinx.coroutines.job-CSDN博客文章浏览阅读555次。一般编程的技法,比如,在Android中,假设在主线程中实现了一个函数,但该函数是耗时操作,毫无疑问,需要将这个函数的实现切入非主线程中操作,那么可以设计一种托管的函数,在托管的函数里面干脏活,处理完成后,把结果抛到主线程。结果1-a: 5 - tid:22。一般编程的技法,比如,在Android中,假设在主线程中实现了一个函数,但该函数是耗时操作,毫无疑问,需要将这个函数的实现切入非主线程中操作,那么可以设计一种托管的函数,在托管的函数里面干脏活,处理完成后,把结果抛到主线程。_kotlinx.coroutines.jobhttps://zhangphil.blog.csdn.net/article/details/131096325

 


http://www.mrgr.cn/news/30489.html

相关文章:

  • 高性能Web网关:OpenResty 基础讲解
  • Android 开启混淆R8编译问题处理
  • uniapp 集成 uview
  • 软件设计师-操作系统
  • React 守卫路由
  • docker save 和 docker load介绍
  • 智谱清影 -CogVideoX-2b-部署与使用,带你揭秘生成6s视频的极致体验!
  • C++初阶:STL详解(五)——vector的模拟实现
  • 华为云DevSecOps和DevOps
  • LeetCode_sql_day28(1767.寻找没有被执行的任务对)
  • Java-list集合转成前端需要的json格式
  • 【Tourism】Yuncheng(3)
  • PCL 计算点云距离
  • mp4转换成mp3,八个超简单视频转换方法
  • GUI编程18:文本框、密码框、文本域
  • 每日刷题(算法)
  • 深度学习基础案例5--VGG16人脸识别(体验学习的痛苦与乐趣)
  • OpenAl o1论文:Let’s Verify Step by Step 快速解读
  • vue2与vue3的区别
  • 论文速递!时序预测!DCSDNet:双卷积季节性分解网络,应用于天然气消费预测过程
  • 基于SSM的宿舍管理系统的设计与实现 (含源码+sql+视频导入教程+文档+PPT)
  • [vue2+axios]下载文件+文件下载为乱码
  • 基于剪切板的高速翻译工具
  • MSF的使用学习
  • 正点原子阿尔法ARM开发板-IMX6ULL(七)——BSP工程管理实验(补:链接文件和.s文件)
  • [学习笔记]树链剖分(简易版) 及其LCA