В Java появятся легковесные нити и корутины

Несколько часов назад Ron Pressler из Oracle анонсировал новый проект Loom: Fibers and Continuations for the Java Virtual Machine.

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

Мотивация проекта объясняется тем, что нынешняю разработку concurrent приложений приходится вести в терминах потоков ОС, однако они плохо ложатся на логические единицы concurrency приложения и плохо масштабируются. В итоге, программисту приходится либо использовать потоки ОС и терять производительность, либо прибегать к другим не очень удобным абстракциям и терять простоту и читаемость кода. Волокна же являются простыми и естественными, но при этом очень дешёвыми. Например, одна виртуальная машина может запросто породить миллион волокон.

Также в проекте будут реализованы корутины (continuations), так как они необходимы для реализации волокон, одна пока неясно, будут ли они доступны для пользователей через публичный API.

Цели проекта выглядят очень амбициозными, и разработчикам придётся решить немало сложных задач. С другой стороны, во многих других языках легковесные нити уже реализованы (Erlang, Go, Haskell), и их опыт показывает, что эта вещь очень нужная и полезная. А реализация легковесных нитей в управляемой среде выполнения (Java runtime) так и напрашивается.

Кстати, проект по реализации в Java легковесных потоков уже есть. Называется он Quasar. Он реализован в виде отдельной библиотеки и использует траснформации байт-кода.

Подписывайтесь на канал в Telegram, чтобы не пропускать новости.

Все материалы на этом сайте выложены под лицензией CC BY-SA 4.0
© Евгений Козлов, 2017-2020