Убьет ли project Loom корутины Kotlin?
Неплохой доклад. Ответ, разумеется, “нет”.
В начале — стандартная теория про то, что потоки != корутины, немного истории и про то как работает Loom и корутины. Если сильно упростить, то Loom переносит манипуляции с объектами Thread
с операционной системы на саму JVM: идея в том, чтобы с минимальными изменениями превратить приложение с кучей потоков в приложение с кучей корутин, например, заменяя Executors.newCachedThreadPool()
на Executors.newVirtualThreadPerTaskExecutor()
. Соответственно, у Loom нет разделение функций на обычные и suspend
. В корутинах больше фокус на всякие плюшки от структурированной асинхронности.
Далее сравниваются цели двух проектов (они, разумеется разные) и компромиссы по производительности и другим аспектам. В будущем возможно использование Loom внутри реализации корутин — сейчас тяжелые IO-операции используют настоящие потоки, которые можно будет заменить на виртуальные.