denis-hrebeniuk
@denis-hrebeniuk
Мобайл/бэкенд разработчик

Почему моя корутина создает два дополнительных потока?

Здравствуйте, столкнулся с проблемой автоматического создания двух дополнительных потоков. Собственно, lifecycleScope не завершает их и они крутятся пока не закрою приложение из недавних.

lifecycleScope.launch(Dispatchers.IO) {
	// код, который что-то делает

	var isDownloading = true

	while (isDownloading) { // грешу на это
		println(Thread.currentThread().name) // потому что в логах при выводе этой инфы, вижу еще два дополнительных потока
		
		// код, в котором через пару минут isDownloading будет false, чтобы выйти из цикла
	}
}


Лог adb
mc7UKDJ.png
  • Вопрос задан
  • 103 просмотра
Решения вопроса 1
iLLuzor
@iLLuzor
Java, Kotlin, Android Developer
Так работают корутины. Запуск происходит на пуле потоков.
IO dispatcher работает на бесконечном пуле и может создавать бесконечное количество потоков.
Если сильно надо работать именно на одном потоке, можно создать свой dispatcher, но скорей всего не надо.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы