Попытка обобщить для меня разницу между этими двумя концепциями (потому что я действительно смущен, когда вижу, что люди используют оба из них в одном предложении, например "неблокирующий асинхронный IO", который я пытаюсь выяснить что это значит).
Итак, в моем понимании, неблокирующий IO является основным механизмом ОС для обработки IO, если есть какие-либо данные, иначе просто возвращайте ошибку/ничего не делать.
В async IO вы просто предоставляете обратный вызов, и ваше приложение будет уведомлено, когда данные будут доступны.
Итак, что на самом деле является "неблокирующим асинхронным IO"? И как все они могут быть реализованы на Java (стандартный JDK, без внешних библиотек, я знаю, что есть java.nio.channels.{Channels, Selector, SelectorKey}
и java.nio.channels.{AsynchronousSocketChannel}
): неблокирующий IO, async IO и неблокирующий async IO (если есть такая вещь )?