withContext CoroutineScope协程切换,kotlin

news2024/9/23 19:14:18

 withContext CoroutineScope协程切换,kotlin

        <dependency>
            <groupId>org.jetbrains.kotlinx</groupId>
            <artifactId>kotlinx-coroutines-core</artifactId>
            <version>1.4.2</version>
        </dependency>

import kotlinx.coroutines.*

fun myFun(
    a: Int,
    b: Int,
    temp: (m: Int, n: Int) -> Int, result: (ret: Int) -> Unit
) {
    CoroutineScope(Dispatchers.IO).launch {
        //耗时操作放入IO协程
        println("($a,$b)Dispatchers.IO @tid:${tid()}")
        var r = temp(a, b)

        //切换协程
        withContext(Dispatchers.Default) {
            //结果抛回去
            result(r)
        }
    }
}

//假设是耗时计算,瓶颈模块
fun longTime(a: Int, b: Int): Int {
    Thread.sleep(500)
    println("sum($a,$b) @tid:${tid()}")
    return a + b
}

fun main(args: Array<String>) {
    println("main @tid:${tid()}")

    myFun(1, 2, { a, b -> longTime(a, b) }) {
        println("(1,2)=$it @tid:${tid()}")
    }

    myFun(3, 4, { a, b -> longTime(a, b) }) {
        println("(3,4)=$it @tid:${tid()}")
    }

    Thread.sleep(3000)
}

fun tid(): Long {
    return Thread.currentThread().threadId()
}

kotlin协程、线程切换,函数方法委托_zhangphil的博客-CSDN博客runBlocking 内部启动的3个协程做耗时操作,从输出可以看到3个协程交叉并发执行,runBlocking 会等到3个协程执行结束后才退出,输出结果有明确先后顺序。一般编程的技法,比如,在Android中,假设在主线程中实现了一个函数,但该函数是耗时操作,毫无疑问,需要将这个函数的实现切入非主线程中操作,那么可以设计一种托管的函数,在托管的函数里面干脏活,处理完成后,把结果抛到主线程。结果1-a: 5 - tid:22。结果1-b: 5 - tid:24。结果2-a: 9 - tid:22。https://blog.csdn.net/zhangphil/article/details/130161705

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/689805.html

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

相关文章

python 上传包到pypi

参考 https://www.jianshu.com/p/81fe5a5cd27a 1.打包 在pypi注册账号&#xff0c;并新建token 需要在用户下创建一个.pypirc文件。username__ token __ 是固定的&#xff0c;password 填入刚刚的token。 使用下面两个命令把dist中文件推送到pypi python setup.py sdist…

AI读心重磅突破登Nature!AI破译大脑信号

近日&#xff0c;洛桑联邦理工学院团队在Nature上提出了一种名为CEBRA的可实现AI读脑的最新算法&#xff0c;以高精度捕捉到了动物大脑的动态。 利用AI&#xff0c;一个研究团队「看见」了老鼠眼中的电影世界。更神奇的是&#xff0c;这种机器学习算法&#xff0c;还能揭示大脑…

【以太坊】本地搭建以太坊测试网络,部署合约

文章目录 工具建议参考测试 工具 Ganache 建议 推荐使用 Ganache 搭建&#xff0c;简单易上手 参考 https://www.npmjs.com/package/ganache 测试 npm install ganache --global && ganache --help ganache

[230609] 阅读TPO57汇总|9:30-10:50

TPO57 01 Pests and Pesticides [3]修辞目的题 修辞目的题做题技巧&#xff1a;找观点&#xff01;不能推理&#xff01;一般找例子前后的观点&#xff01; P3段 段意即观点&#xff0c;观点在段首或段尾&#xff01; 考察比较的作用 主要理解In other words后面的话&#…

新老版本AndroidStudio删除无用资源方法总结

今年AndroidStudio版本更新比较快&#xff0c;一些常用的功能都在变化&#xff0c;其中删除项目中无用资源变化的有点大&#xff0c;特在此记录总结下。这里所说的新老版本的Android Studio其实就是看Android Studio最上面有没有&#xff1a;Anaylze 老版本是有的 新版本这个…

SeaTunnel 发布成为 Apache 顶级项目后首个版本 2.3.2,进一步提高 Zeta 引擎稳定性和易用性

近日&#xff0c;Apache SeaTunnel 正式发布 2.3.2 版本。此时距离上一版本 2.3.1 发布已有两个多月&#xff0c;期间我们收集并根据用户和开发者的反馈&#xff0c;在 2.3.2 版本中对 SeaTunnel Zeta Engine 进行了 Bug 修复&#xff0c;提高了引擎的稳定性和使用效率。 此外&…

【Java】Java核心 74:XML (下)

文章目录 **7** **Schema约束(能够看懂即可)****1** **书写schema约束****2** **在xml文件中引入schema约束** 7 Schema约束(能够看懂即可) 与dtd约束一样&#xff0c;schema它也是用来约束xml文件的。schema约束书写的时候&#xff0c;它遵守xml的语法规则。在书写schema的时…

vb.net 正则表达式解析一些奇奇怪怪的文件名为时间类型

Public Function 正则表达式A(f As String) As Date2023-02-06 1653830If New Regex("\d{4}.\d{2}.\d{2}.\d{6}").IsMatch(f) ThenDim nian Strings.Mid(f, 1, 4)Dim yue Strings.Mid(f, 6, 2)Dim ri Strings.Mid(f, 9, 2)Dim shi Strings.Mid(f, 12, 2)Dim feng…

什么是编程语言?||与编程相关的计算机硬件介绍

什么是编程语言&#xff1f; 学习编程语言之前&#xff0c;首先要搞清楚“编程语言”这个概念。 很小的时候&#xff0c;父母就教我们开口说话&#xff0c;也教我们如何理解别人讲话的意思。经过长时间的熏陶和自我学习&#xff0c;我们竟然在不知不觉中学会了说话&#xff0c…

【从零开始学习JAVA | 第二十二篇】BigInteger

目录 前言&#xff1a; BigInterger&#xff1a; BigInteger常见的方法&#xff1a; 总结&#xff1a; 前言&#xff1a; 本篇我们将介绍BigInteger这个比较实用一点的API&#xff0c;这个API在我们实际写项目中都是很实用的API&#xff0c;因此大家应该对这个API有更加熟练的…

sublime text 打开 txt 文档乱码问题

对于 windows 系统使用系统自带的 txt 编辑工具&#xff0c;默认打开和保存文件的文件的格式是 GBK 或者 GB2312&#xff0c;而 sublime 默认仅支持 utf-8&#xff0c;所以当从 windows 系统拷贝文件在 mac 上浏览有时候会出现乱码的问题&#xff0c;这时候就需要安装插件使 su…

RDBMS 与 非RDBMS

RDBMS vs 非RDBMS 前言一、关系型数据库(RDBMS)1、实质2、优势 二、非关系型数据库(非RDBMS)1、介绍2、有哪些非关系型数据库3、NoSQL的演变4、小结 前言 本博主将用CSDN记录软件开发求学之路上亲身所得与所学的心得与知识&#xff0c;有兴趣的小伙伴可以关注博主&#xff01;…

基于uni-app+vue3跨端「h5+小程序+App」仿制chatGPT模板实例

uni-chatgpt 一款uniappvite4uview-plus多端ChatGPT模板实例。 全新首发的一款多端仿制chatgpt智能对话实战项目&#xff0c;基于uniAppVue3PiniauViewUIMarkdownIt等技术开发搭建项目。支持编译到h5小程序APP端&#xff0c;支持markdown语法解析及代码高亮。 功能特点 全屏沉…

LinkedList的底层实现原理(JDK8)

目录 一、知识点回顾二、LinkedList 的 add() 和 remove() 的实现2.1 list.add(e) 实现原理2.2 list.remove(e) 实现原理 一、知识点回顾 双向链表特点&#xff1a; 区间离散&#xff0c;占用内存宽松&#xff0c;空间复杂度小&#xff0c;时间复杂度 O(n)。优点&#xff1a;…

Android Jetpack Compose —— FloatingActionButton

FloatingActionButton 通常用于呈现应用程序的主要操作或常用操作&#xff0c;并具有显著的圆形形状和浮动的定位。FloatingActionButton 提供了一种简单而优雅的方式来引导用户进行主要的应用程序交互&#xff0c;例如开始一个新的任务、分享内容、启动一个动作等。它在应用程…

Java——《面试题——Zookeeper篇》

前文 java——《面试题——基础篇》 Java——《面试题——JVM篇》 Java——《面试题——多线程&并发篇》 Java——《面试题——Spring篇》 Java——《面试题——SpringBoot篇》 Java——《面试题——MySQL篇》​​​​​​ Java——《面试题——SpringCloud》 Java…

FreeRTOS 中断管理之延迟中断处理 -- 二值信号量同步

3.1 概览 3.1.1 事件&#xff1a;嵌入式实时操作系统需要对整个系统环境产生的事件作出反应&#xff0c;例如&#xff1a;按一下按键&#xff0c;灯闪一下 3.1.2 ISR 中断服务函数尽量越短越好&#xff0c;应快速执行完&#xff0c;然后退出中断服务函数 3.1.3 在中断服务函…

Web3在HTML中获取 MetaMask 启用的用户列表

当然 我们还是要先启动ganache环境 然后 通过MetaMask 导入一些用户 然后 我们需要在页面中引入 web3.min.js 如果您还没有这个文件 可以查看我的文章web3.js获取导入 然后我访问官网 https://learnblockchain.cn/docs/web3.js/web3-eth.html#getchainid 打开后 先来到 web3.…

OAuth2.0四种授权模式及实战

OAuth2.0四种授权模式以及Oauth2.0实战 首先我们得了解什么是Oauth2.0&#xff0c;简单来说Oauth2.0它是一个授权协议。我们可能会听说过&#xff0c;使用Oauth2.0来实现单点登录SSO&#xff0c;以及第三方登录。那个什么是授权&#xff1f; 举个通俗易懂的例子&#xff0c;就…

概率论与数理统计教程第六章节笔记

参考书籍&#xff1a;概率论与数理统计教程第三版 茆诗松 程依明 濮晓龙 编著 文章声明&#xff1a;如有错误还望批评指正 文章目录 ξ \xi ξ 6.1点估计的概念与无偏性 ξ 6.2 \xi6.2 ξ6.2矩估计及相和性 ξ 6.3 \xi6.3 ξ6.3最大似然估计与EM算法 ξ 6.6 \xi6.6 ξ6.6区间估…