Kotlin GlobalScope 和 CoroutineScope

Kotlin 复制代码
package com.tiger.mykotlinapp.scope

import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.cancel
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch

fun main() {

    val  globalScope = GlobalScope
    globalScope.launch {
        delay(3000)
        println("hello")
    }

    globalScope.launch {
        delay(3000)
        println("hello")
    }

    //因为globalScope是整个应用程序的生命周期,不能在此手动取消它,调用抛异常 java.lang.IllegalStateException: Scope cannot be cancelled because it does not have a job
    globalScope.cancel()//不能手动取消它
    while (true);

}
Kotlin 复制代码
package com.tiger.mykotlinapp.scope

import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.cancel
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch

fun main() {

    val coroutineScope = CoroutineScope(Dispatchers.Default)
    coroutineScope.launch {
        delay(3000)
        println("hello")
    }
    coroutineScope.launch {
        delay(3000)
        println("hello")
    }
    //发现可以取消
    coroutineScope.cancel()
    while (true);

}

CoroutineScope和GlobalScope的区别

  1. 作用域不同,第一个作用域是activity,第二个是全局整个应用程序

2.第一个可以取消,第二个取消会抛异常

3.一般都是用第一个,更加灵活。

相关推荐
xin_nai1 小时前
LeetCode热题100(Java)(6)矩阵
java·leetcode·矩阵
代码AI弗森6 小时前
一文理清楚“算力申请 / 成本测算 / 并发评估”
java·服务器·数据库
Old Uncle Tom7 小时前
OpenClaw 记忆系统 -- 记忆预加载
java·数据结构·算法·agent
小小小米粒7 小时前
Collection单列集合、Map(Key - Value)双列集合,多继承实现。
java·开发语言·windows
摇滚侠7 小时前
expdp 查看帮助
java·数据库·oracle
:1218 小时前
java基础
java·开发语言
曹牧9 小时前
Spring:@RequestMapping注解,匹配的顺序与上下文无关
java·后端·spring
daixin88489 小时前
cursor无法正常使用gpt5.5等模型解决方案
java·redis·cursor
韦禾水9 小时前
记录一次项目部署到tomcat的异常
java·tomcat
曦月合一10 小时前
树莓派安装jdk、tomcat、vnc、谷歌浏览器开机自启等环境配置
java·tomcat·树莓派