# kt **Repository Path**: 529238415/kt ## Basic Information - **Project Name**: kt - **Description**: kotlin学习 - **Primary Language**: Kotlin - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-12-05 - **Last Updated**: 2021-05-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # kt #### kotlin 学习使用 协成的使用 协程就像非常轻量级的线程。线程是由系统调度的,线程切换或线程阻塞的开销都比较大。而协程依赖于线程,但是协程挂起时不需要阻塞线程 协程很重要的一点就是当它挂起的时候,它不会阻塞其他线程。协程底层库也是异步处理阻塞任务,但是这些复杂的操作被底层库封装起来,协程代码的程序流是顺序的,不再需要一堆的回调函数,就像同步代码一样,也便于理解、调试和开发。它是可控的,线程的执行和结束是由操作系统调度的,而协程可以手动控制它的执行和结束 implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.1.1" runBlocking启动的协程任务会阻断当前线程,直到该协程执行结束。当协程执行结束之后,页面才会被显示出来 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) Log.e(TAG, "主线程id:${mainLooper.thread.id}") test()//全部执行完毕 Log.e(TAG, "协程执行结束")//最后才执行 } private fun test() = runBlocking { repeat(8) { Log.e(TAG, "协程执行$it 线程id:${Thread.currentThread().id}") delay(1000) } }