Я создаю исполнитель пула потоков только с одним потоком и использую метод Kotlin asCoroutineDispatcher () в программе Kotlin. Когда я запускаю несколько сопрограмм из цикла и записываю имя потока, я вижу разные имена - pool1-thread1, pool3-thread1, pool9-thread-1 и т. Д.
Почему существует несколько потоков, когда я использовал один поток для пула?
Котлин по-разному управляет пулом потоков?
// this is executed in loop
fun executeTask(url: String) {
GlobalScope.launch {
val result = runAsync(url)
Log.d("coroutineCheck", "$url\t\tStatus:$result")
}
}
//some blocking n/w IO goes in this method
//I log the thread name here
suspend fun runAsync(url: String): String = withContext(Executors.newFixedThreadPool(1).asCoroutineDispatcher()) {
}