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

news2024/9/20 0:12:29

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

 

import kotlinx.coroutines.*

fun main() {
    runBlocking {
        val coroutineScope = CoroutineScope(Dispatchers.IO)

        val job = coroutineScope.launch {
            var i = 0
            while (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 = 0
            while (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 = 0
            while (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.coloradmin.cn/o/2147371.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

play-with-docker使用指南

Play-with-Docker(PWD)是一个在线平台,提供免费的 Docker 实验环境。它允许用户在浏览器中创建和管理 Docker 容器,适合学习和实验。国内访问需要借助于魔法工具,否则可能无法访问哦。 网站地址:https://labs.play-with-docker.com/ 一、登录play-with-docker 点击页面上…

图书管理系统(面向对象的编程练习)

图书管理系统&#xff08;面向对象的编程练习&#xff09; 1.系统演示2.设计框架讲解3.代码的详细讲解3.1 多本书籍的实现3.2 不同操作人员的实现3.3 不同work操作的实现 1.系统演示 下面主要展示系统的删除图书功能和显示图书功能&#xff0c;帮助大家在开始写代码前先了解图…

秦时明月6.2魔改版+GM工具+虚拟机一键端

今天给大家带来一款单机游戏的架设&#xff1a;秦时明月。 另外&#xff1a;本人承接各种游戏架设&#xff08;单机联网&#xff09; 本人为了学习和研究软件内含的设计思想和原理&#xff0c;带了架设教程仅供娱乐。 教程是本人亲自搭建成功的&#xff0c;绝对是完整可运行…

【自动化测试】常见的自动化遍历工具以及如何选择合适的自动化遍历工具

引言 自动化遍历测试通常依赖于特定的工具来实现应用的自动操作和测试 文章目录 引言一、常见的自动化遍历工具1.1 Appium1.2 Selenium1.3 Calabash1.4 Robot Framework1.5 Espresso1.6 XCTest1.7 Macaca1.8 TestComplete1.9 UiAutomator1.10 总结 二、如何选择合适的自动化遍历…

SaltStack自动化运维部署

一.什么是SaltStack SaltStack是一个服务器基础设施管理工具&#xff0c;它具有配置管理&#xff0c;远程执行&#xff0c;监控等功能&#xff0c;SaltStack由Python语言编写&#xff0c;是非常简单易用和轻量级的管理工具。 二.为什么使用SaltStack 为同时管理多台机器&…

BUUCTF-MISC-easycap

题目文件下载下来解压之后获得了一个流量包 用Wireshark打开 点击分析--追踪流--TCP--Stream 直接就获得了flag FLAG:385b87afc8671dee07550290d16a8071

乐队排练看谱软件有哪些 乐队排练编曲软件哪个好

提起乐队&#xff0c;人们想到的大多是乐队的主唱&#xff0c;乐队主唱是听众最能够直观感受到一支乐队演奏水平的部分。但是严格意义上来说&#xff0c;乐队的组成部分并不只有主唱&#xff0c;在整个乐队中除了主唱&#xff0c;恐怕吉他手或贝斯手就是最重要的组成部分了。乐…

如何看待IBM中国的裁员?

前言 IBM 作为一家全球知名的科技公司&#xff0c;在不同的历史时期都进行了不同程度的结构调整&#xff0c;包括在中国市场的裁员行动。这类事件通常反映了公司在面对全球经济环境变化和技术发展趋势时所作出的战略调整。 从宏观整体分析 1. 全球经济环境的影响 全球经济环境…

前海桂湾的海边免费停车场

​前海很多打工人晚上加班前海边散步的地方。相信很多前海打工人都曾经路过这个免费的停车场。坐标出于滨海大道的断头路区域。 看卫星地图可以发现&#xff0c;是个断头路&#xff0c;但是面积还是很大&#xff0c;停个几十辆车没问题。我就停过一次&#xff0c;周末带娃来这里…

ROS 设置dhcp option 6 多个地址格式

ROS routeOS 手工设置 dhcp 服务 option 6 多个dns 地址格式。字符串方式

erlang学习:Linux常用命令1

Linux的概念 Linux&#xff0c;一般指GNU/Linux&#xff08;单独的Linux内核并不可直接使用&#xff0c;一般搭配GNU套件&#xff0c;故得此称呼&#xff09;&#xff0c;是一种免费使用和自由传播的类UNIX操作系统&#xff0c;其内核由林纳斯本纳第克特托瓦&#xff08;Linus…

AI技术好书推荐:《AI系统-原理与架构》

今年1月份在B站发现了一个B站宝藏博主&#xff0c;发布的一系列AI技术类科普视频内容很干&#xff0c;逻辑清晰&#xff0c;很多知识点讲的深入浅出&#xff0c;非常有用&#xff0c;被直接种粉。 后来这一系列的课程内容博主有了出书的计划&#xff0c;机缘巧合有幸参与部分章…

今日所学啊

ArcGIS打不开焦点统计如何解决_arcgis焦点统计打不开-CSDN博客 好吧其实最后焦点统计还是不行&#xff0c;我就去ArcGIS Pro里做焦点统计了哈哈哈哈哈哈哈 visual studio多工程项目管理_visual studio 的模块管理-CSDN博客 1.今天成功#include <QNetworkReply>不画红线…

软件验收测试报告模版分享?专业软件验收测试公司推荐

在现代软件开发中&#xff0c;软件验收测试报告是开发与交付过程中的重要环节&#xff0c;它不仅是对软件产品质量的把关&#xff0c;也是确保客户满意度的关键文档。 在验收测试过程中&#xff0c;测试团队会对软件的各项功能进行全面的测试&#xff0c;识别潜在的问题并进行…

pycv实时目标检测快速实现

使用python_cv实现目标实时检测 python 安装依赖核心代码快速使用实现结果展示enjoy python 安装依赖 opencv_python4.7.0.72 pandas1.5.3 tensorflow2.11.0 tensorflow_hub0.13.0 tensorflow_intel2.11.0 numpy1.23.5核心代码快速使用 # 使用了TensorFlow Hub和OpenCV库来实…

【AI大模型】LLM主流开源大模型介绍

目录 &#x1f354; LLM主流大模型类别 &#x1f354; ChatGLM-6B模型 2.1 训练目标 2.2 模型结构 2.3 模型配置(6B) 2.4 硬件要求 2.5 模型特点 2.6 衍生应用 &#x1f354; LLaMA模型 3.1 训练目标 3.2 模型结构 3.3 模型配置&#xff08;7B&#xff09; 3.4 硬件…

探索RESTful风格的网络请求:构建高效、可维护的API接口【后端 20】

探索RESTful风格的网络请求&#xff1a;构建高效、可维护的API接口 在当今的软件开发领域&#xff0c;RESTful&#xff08;Representational State Transfer&#xff09;风格的网络请求已经成为构建Web服务和API接口的标配。RESTful风格以其简洁、无状态、可缓存以及分层系统等…

YOLOv8的GPU环境搭建方法

首先说明这个环境搭建教程是基于电脑已经安装好CUDA和CUDNN的情况下&#xff0c;去搭建能够正确运行YOLOv8代码的Pytorch的GPU版本。具体安装方法可见&#xff1a;最适合新手入门的CUDA、CUDNN、Pytorch安装教程_cuda安装-CSDN博客 第一步&#xff1a;需要在cmd中创建虚拟环境c…

Mybatis缓存实现

01-一级缓存 演示案例首先创建sql查询语句 在对应接口中声明方法参数是Dept因为sql语句中的参数在Dept pojo类中都有所有声明pojo对象 由于返回的数量不知道是多少条所以用list接收,<>由于返回的是dept类数据所以泛型里传入Dept 一级缓存的介绍如下图 失效情况详细介绍…

【移动端开发】“明日头条APP”

文章目录 1 系统概述1.1研究背景1.2研究意义 2 系统设计2.1 关键技术2.2 系统设计2.2.1 系统功能模块2.2.2 数据库设计 3 系统实现3.1 数据模型3.1.1 NewsURL3.1.2 NewsType3.1.3 NewsInfo 3.2 数据库操作3.2.1 DBOpenHelper3.2.2 DBManager 3.3 适配器类3.3.1 AddItem3.3.2 In…