При поиске в сети параллелизма в jvm я обнаружил вопросы о поиске неблокирующей библиотеки ввода-вывода для Scala / Java.
В чем проблема? Если я хочу отправить что-то в файл / сокет, я могу запустить отдельный поток, который выполняет эту работу.
Я знаю, что могут возникнуть проблемы с использованием потоков, основанных на событиях, потому что вся система может быть заблокирована. Но относится ли это к JVM / Scala?
ДОБАВЛЕНО :
Поправьте меня, если я ошибаюсь:
Я думаю, что когда вам нужно вызвать некоторую функцию ввода-вывода в асинхронном режиме, она должна перейти в отдельный процесс или системный (тяжелый) поток. Я прав?
Итак - все вопросы о решении такого рода вещей в обычных языках сводятся к созданию и управлению отдельным процессом или потоками. Таким образом, единственное облегчение со стороны языка - это создание некоторого пула потоков, который будет назначен операциям ввода-вывода в асинхронном режиме.
Итак, моя гипотеза такова.
Предложение: Язык X лучше, чем Y, потому что вызов асинхронной операции ввода-вывода не блокирует виртуальную машину неверен, потому что на каждом языке, поддерживающем системные потоки, есть возможность управлять NIO, единственная разница в том, что язык X имеет лучшую поддержку для этого за счет встроенных библиотек / языковых функций.