Бэк на JVM: уходить с Kotlin coroutines на Java virtual threads ради простоты?

Теги: #Kotlin
Рейтинг: 56.6% · 5 голосов
Python, Rust, Go, C++, C#, Java, Kotlin: синтаксис, паттерны проектирования, производительность, многопоточность и сравнение языков.
Ответить
Аватара пользователя
sergey_lab
Сообщения: 9
Зарегистрирован: Чт май 14, 2026 5:13 pm

Бэк на JVM: уходить с Kotlin coroutines на Java virtual threads ради простоты?

Сообщение sergey_lab »

Тимлид топит за переписать новые сервисы на чистую Java 21 с virtual threads — мол coroutines это лишний слой и suspend-инфекция по всему коду. У нас сейчас Spring + Kotlin coroutines. Кто-то реально мигрировал?
👍 ❤️ 🔥1 😄 🤔
✔ Лучший ответ сформирован автоматически — mark_ml
Мигрировал с coroutines на virtual threads в одном сервисе — Spring Boot 3.2, Kotlin. Честно: для простого CRUD с БД через r2dbc → JDBC разница в сложности кода реальная, suspend-инфекция уходит. Но тимлид недооценивает одну вещь: виртуальные треды не решают задачу backpressure и structured concurrency так элегантно как корутины. Если у тебя просто N параллельных HTTP-вызовов — VT хватит. Если це…
Перейти к ответу →
Аватара пользователя
asyncomega3648
Сообщения: 2
Зарегистрирован: Вс май 17, 2026 6:41 pm

Re: Бэк на JVM: уходить с Kotlin coroutines на Java virtual threads ради простоты?

Сообщение asyncomega3648 »

Со стороны андроида скажу: structured concurrency и отмена в корутинах это то, чего у loom из коробки нет. Если у вас сложные пайплайны с отменой — потеряете удобство.
👍 ❤️ 🔥3 😄1 🤔
Аватара пользователя
egor_core60
Сообщения: 7
Зарегистрирован: Пн май 11, 2026 4:11 pm

Re: Бэк на JVM: уходить с Kotlin coroutines на Java virtual threads ради простоты?

Сообщение egor_core60 »

Мы держим оба. Virtual threads шикарны для тупого thread-per-request блокирующего кода — старые JDBC драйверы просто заработали без переписывания на reactive. Никаких suspend, никакой раскраски функций.
👍1 ❤️1 🔥 😄1 🤔
Аватара пользователя
savva_ops
Сообщения: 2
Зарегистрирован: Сб май 30, 2026 12:36 pm

Re: Бэк на JVM: уходить с Kotlin coroutines на Java virtual threads ради простоты?

Сообщение savva_ops »

Главный подвох loom — pinning. Synchronized-блок или нативный вызов пинит виртуальный поток к носителю, и вся выгода испаряется. Проверьте свои либы профайлером прежде чем радоваться. У нас Hikari пинил пул, искали два дня.
👍1 ❤️ 🔥 😄1 🤔1
Аватара пользователя
ksenia8990
Сообщения: 1
Зарегистрирован: Пт май 22, 2026 9:52 pm

Re: Бэк на JVM: уходить с Kotlin coroutines на Java virtual threads ради простоты?

Сообщение ksenia8990 »

senior_burnout вот это полезно, спасибо. В Java 24 вроде synchronized pinning убрали?
👍 ❤️ 🔥 😄 🤔1
Аватара пользователя
fedor_tcp
Сообщения: 34
Зарегистрирован: Ср май 13, 2026 1:00 pm

Re: Бэк на JVM: уходить с Kotlin coroutines на Java virtual threads ради простоты?

Сообщение fedor_tcp »

Да, JDK 24 (JEP 491) сняли pinning на synchronized. Если вы на 21 LTS — ещё актуально, на 24+ полегче.
👍1 ❤️ 🔥 😄1 🤔1
Аватара пользователя
valera_vector
Сообщения: 32
Зарегистрирован: Пн май 11, 2026 8:23 am

Re: Бэк на JVM: уходить с Kotlin coroutines на Java virtual threads ради простоты?

Сообщение valera_vector »

По мне так если команда уже знает Kotlin — не трогайте что работает. Миграция ради "меньше слоёв" это переписывание ради переписывания, бизнес спасибо не скажет.
👍1 ❤️ 🔥 😄 🤔
Аватара пользователя
mark_ml
Сообщения: 36
Зарегистрирован: Вт май 12, 2026 12:33 am

Re: Бэк на JVM: уходить с Kotlin coroutines на Java virtual threads ради простоты?

Сообщение mark_ml »

✔ Лучший ответ — сформирован автоматически
Мигрировал с coroutines на virtual threads в одном сервисе — Spring Boot 3.2, Kotlin. Честно: для простого CRUD с БД через r2dbc → JDBC разница в сложности кода реальная, suspend-инфекция уходит. Но тимлид недооценивает одну вещь: виртуальные треды не решают задачу backpressure и structured concurrency так элегантно как корутины. Если у тебя просто N параллельных HTTP-вызовов — VT хватит. Если цепочки с отменой, таймаутами по поддеревьям, агрегация результатов — coroutines выигрывают по читаемости.
👍1 ❤️2 🔥1 😄1 🤔
Аватара пользователя
gleb_dns92
Сообщения: 11
Зарегистрирован: Пн май 11, 2026 9:38 pm

Re: Бэк на JVM: уходить с Kotlin coroutines на Java virtual threads ради простоты?

Сообщение gleb_dns92 »

Важный нюанс для Spring + VT: убедись что убрал все blocking-коды из synchronized блоков или заменил на ReentrantLock, иначе получишь pinned threads и весь выигрыш VT испарится. Это не гипотетическая проблема — Hibernate 6.2 и ряд JDBC-драйверов держали synchronized внутри до недавнего времени. Проверяй через -Djdk.tracePinnedThreads=full при нагрузочном тесте перед миграцией.
👍 ❤️ 🔥 😄 🤔
Ответить
Поделиться темой: ✈ Telegram VK

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость