当前位置: 首页 > 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

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • CPU 和 GPU:为什么GPU更适合深度学习?
  • 模仿抖音用户ID加密ID的算法MB4E,提高自己平台ID安全性
  • 【Java】网络编程-地址管理-IP协议后序-NAT机制-以太网MAC机制
  • Qt_自定义信号
  • QT+OSG+OSG-earth如何在窗口显示一个地球
  • 【在Linux世界中追寻伟大的One Piece】五种IO模型和阻塞IO
  • play-with-docker使用指南
  • redis集群创建问题处理
  • 数据结构-3.3.栈的链式存储实现
  • PCL 计算点云距离
  • Python 入门教程(4)数据类型 | 4.6、列表
  • Oracle从入门到放弃
  • Halo 开发者指南——项目运行、构建
  • AI绘画:科技赋能艺术的崭新时代
  • CAPL_构建基于UDS的刷写学习—01 Hex文件的解析
  • [iOS]Core Data浅析一 -- 启用Core Data
  • [译] 怎样写一个基础的编译器
  • CSS 提示工具(Tooltip)
  • HTTP 简介
  • JS变量作用域
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • laravel5.5 视图共享数据
  • Mac转Windows的拯救指南
  • PyCharm搭建GO开发环境(GO语言学习第1课)
  • TypeScript实现数据结构(一)栈,队列,链表
  • use Google search engine
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 第2章 网络文档
  • 基于Android乐音识别(2)
  • 简单基于spring的redis配置(单机和集群模式)
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 日剧·日综资源集合(建议收藏)
  • 我的面试准备过程--容器(更新中)
  • 硬币翻转问题,区间操作
  • Hibernate主键生成策略及选择
  • 如何用纯 CSS 创作一个货车 loader
  • ​configparser --- 配置文件解析器​
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • # 20155222 2016-2017-2 《Java程序设计》第5周学习总结
  • # wps必须要登录激活才能使用吗?
  • #pragma multi_compile #pragma shader_feature
  • #pragma pack(1)
  • (02)Hive SQL编译成MapReduce任务的过程
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (2024最新)CentOS 7上在线安装MySQL 5.7|喂饭级教程
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (回溯) LeetCode 46. 全排列
  • (回溯) LeetCode 78. 子集
  • (精确度,召回率,真阳性,假阳性)ACC、敏感性、特异性等 ROC指标
  • (亲测有效)推荐2024最新的免费漫画软件app,无广告,聚合全网资源!
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (十三)Flask之特殊装饰器详解
  • (四)JPA - JQPL 实现增删改查