【发布时间】:2022-01-12 16:23:52
【问题描述】:
在 Android 的上下文中,调度程序与主线程有什么区别。
根据我对文档的理解,
它由 JVM 上的共享线程池提供支持。默认情况下, 此调度程序使用的最大并行度等于 CPU 核心数,但至少为两个。并行度 X 保证在此期间最多可以执行 X 个任务 并行调度程序。
它会产生一个新线程,还是会根据日志名称DefaultDispatcher-worker-1 有一个工作线程,该工作线程将与除主线程之外的线程池进行通信以处理协同程序块或工作线程本身是一个 Co-例行公事?
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val timeInMillis = measureTimeMillis {
GlobalScope.launch(Dispatchers.Default) {
Log.d(TAG, "Starting coroutine in thread ${Thread.currentThread().name}")
val answer = doNetworkCall()
withContext(Dispatchers.Main) {
Log.d(TAG, "Setting text in thread ${Thread.currentThread().name}")
}
}
}
Log.d(TAG, "(The operation took $timeInMillis ms)")
}
【问题讨论】:
标签: android multithreading kotlin kotlin-coroutines