package com.example.coroutine
import android.os.Bundle
import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import kotlinx.coroutines.*
classMainActivity:AppCompatActivity(){
override fun onCreate(savedInstanceState: Bundle?){super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)initData()}//Dispatchers.Main 调用程序在Android的主线程中//Dispatchers.IO 适合主线程之外的执行磁盘或者网络io操作//Dispatchers.Default 适合主线程之外的CPU操作,例如Json数据的解析,以及表的排序private fun initData(){/****线程的方式,A,B会随机打*******/println("start")threadA()threadB()print("end")/***协程的方式,A打印完才会打印B********///通过Job获取协程的生命周期
val scope =CoroutineScope(Dispatchers.Main +Job())
val globalScope = GlobalScope
scope.launch {
Log.e("start","start")doSomethingA()doSomethingB()
Log.e("end","end")}}private suspend fun doSomethingA(){withContext(Dispatchers.IO){for(i in 0..100){println("xxA:$i")}}}private suspend fun doSomethingB(){withContext(Dispatchers.IO){for(i in 0..100){println("xxA:$i")}}}private fun threadA(){Thread(Runnable {for(i in 0..100){println("xxA:$i")}}).start()}private fun threadB(){Thread(Runnable {for(i in 0..100){println("xxB:$i")}}).start()}}