Kotlin runBlocking launch多个协程读写mutableListOf时序

Kotlin runBlocking launch多个协程读写mutableListOf时序

import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking

fun main(args: Array<String>) {
    var lists = mutableListOf<String>()

    runBlocking {
        launch {
            repeat(Int.MAX_VALUE) {
                delay(1)

                val len = (3..6).random()
                lists.clear()
                for (i in 0 until len) {
                    lists.add("$it@$i")
                }

                lists.forEach(::println)
            }
        }

        launch {
            repeat(Int.MAX_VALUE) {
                delay(1)

                lists.forEachIndexed { index, i ->
                    lists[index] = "a-${lists.size}-$it-$index"
                }
                println(lists)
            }
        }

        launch {
            repeat(Int.MAX_VALUE) {
                delay(1)

                lists.forEachIndexed { index, i ->
                    lists[index] = "b-${lists.size}-$it-$index"
                }
                println(lists)
            }
        }
    }
}

kotlin的for循环遍历_zhangphil的博客-CSDN博客kotlin的for循环遍历。https://blog.csdn.net/zhangphil/article/details/130730729

kotlin协程,runBlocking里面的launch_zhangphil的博客-CSDN博客runBlocking 内部启动的3个协程做耗时操作,从输出可以看到3个协程交叉并发执行,runBlocking 会等到3个协程执行结束后才退出,输出结果有明确先后顺序。runBlocking 会等待相同作用域的协程完成才退出runBlocking 本身阻塞线程,但内部运行的协程又非阻塞。kotlin的runBlocking 当内部相同作用域的所有协程都运行结束后,在 runBlocking 之后的代码才能执行, runBlocking 会阻塞所在线程。https://blog.csdn.net/zhangphil/article/details/131387354kotlin mutableListOf Collection_zhangphil的博客-CSDN博客Java for循环删除ArrayList重复元素陷阱,Iterator迭代器遍历删除重复元素这是一个一不留神就犯下错误的Java列表ArrayList重复删除元素陷阱,并且问题比较隐蔽。Java的Vector,Stack,ArrayList,LinkedList异同Collection的实现子类型是什么,它都支持iterator()函数,该函数返回一个迭代器,该迭代器即可遍历访问Collection中每一个元素。List是有序的Collection。和Set不同,List允许有相同元素。https://blog.csdn.net/zhangphil/article/details/131464487

kotlin协程runBlocking 阻塞线程_zhangphil的博客-CSDN博客runBlocking 内部启动的3个协程做耗时操作,从输出可以看到3个协程交叉并发执行,runBlocking 会等到3个协程执行结束后才退出,输出结果有明确先后顺序。runBlocking 会等待相同作用域的协程完成才退出runBlocking 本身阻塞线程,但内部运行的协程又非阻塞。kotlin的runBlocking 当内部相同作用域的所有协程都运行结束后,在 runBlocking 之后的代码才能执行, runBlocking 会阻塞所在线程。https://blog.csdn.net/zhangphil/article/details/129263455

猜你喜欢

转载自blog.csdn.net/zhangphil/article/details/131472506