Есть ли способ сделать асинхронный ввод-вывод в Java без блокировки каких-либо потоков (включая фоновые потоки)? Исходя из C#, мое понимание asyn c IO заключается в том, что когда вы вызываете
await ReadAsync()
Вызывающий поток (часть пула потоков) входит в ReadAsync
Функция в какой-то момент вызывает функцию асинхронного чтения из ядра ОС, а затем добавляет себя обратно в пул потоков, чтобы получить другие Tasks
. Как только чтение завершено, пул потоков уведомляется, и другой поток получает остальную часть Task
.
In Java, с другой стороны, документация и этот ответ предполагает, что асинхронные функции ввода-вывода просто вызываются фоновым потоком, который затем блокируется. Это кажется менее производительным. Есть ли способ добиться истинного неблокирующего ввода-вывода в Java?