почему work.map (запуск потока) .foreach (join ()) работает в kotlin?

Я пытался найти объяснение, почему это работает в котлине:

(1..100).map { launch { System.out.println("Hello from on ${Thread.currentThread().name}") delay(100) } }.forEach { it.join() } 

В java это:

  1. начать поток 1
  2. join thread 1 – и блокируйте здесь, никогда не запуская более 1 потока.

В котлин этот процесс на несколько потоков параллельно.

Почему это работает?

Вызов map завершается раньше, чем для каждого, поэтому каждый launch до первого join (внутри forEach ). Эти операции сбора данных не работают, как потоки Java. Прочтите этот ответ для получения дополнительной информации.

В Котлине это так:

  • launch сопрограммы 1-100
  • join coroutine 1-100
  • Unity (C #) -> Kotlin <- Coroutines
  • правильное поведение сопрограмм?
  • Канал моста к последовательности
  • Разница между нитью и сопрограммой в Котлине
  • Kotlin coroutines и Spring Framework 5 реактивные типы
  • Невозможно подтвердить приостановленный блок, переданный для forEach
  • Слушатель внутри производителя
  • ArrayBroadcastChannel: второй абонент не обновляет пользовательский интерфейс
  • kotlin coroutine val vs fun
  • Как: стрелять и забывать асинхронные сопрограммы в Котлине
  • Kotlin Coroutines - правильный путь в Android
  • Interesting Posts

    Как использовать тип перечисления Postgresql через Kotlin Exposed ORM?

    Kotlin – общий параметр в List – сочетание Java и Kotlin

    Исключение: blockingConnect не следует вызывать в потоке пользовательского интерфейса, несмотря на то, что я добавил другой поток

    Привязка данных Android к Kotlin, BaseObservable и пользовательский делегат

    Как функции хранения в статической коллекции будут влиять на систему?

    Переменная с kotlin для URL

    Абстрактный класс Котлина с общим параметром и методами, которые используют тип param

    Как связать общие типы двух параметров функции Kotlin?

    Ошибка компиляции типа Kotlin: требуется Success <T>, Found MyError

    Надежное измерение распределения JVM

    Mockito / Powermock не работает должным образом с Kotlin

    Котлин: сумма BigDecimal в списке

    Невозможно использовать все параметры конфигурации с настраиваемой конфигурацией в градиенте с помощью kotlin-dsl

    Kotlin-приемник без поля

    Отсутствует функция Kotlin View setEnabled?

    Давайте будем гением компьютера.