Все еще проблема неблокирующих операций ввода-вывода в Java на стороне сервера? - PullRequest
0 голосов
/ 14 сентября 2009

Java NIO Socket Framework предположительно скрывает грязные детали неблокирующей IO от разработчиков, позволяя им создавать хорошо масштабируемые приложения, которые могут обрабатывать более 10000 входящих и исходящих сокетов, используя только один поток.

  • Являются ли неблокирующие операции ввода-вывода по-прежнему проблемой для типичной версии Java 2 SE / EE?

  • Является ли этот фреймворк еще необходимым и полезным?

Спасибо за ваше время.

Ответы [ 2 ]

3 голосов
/ 14 сентября 2009

Ну, конечно, NIO создает абстракцию над некоторыми деталями. Неблокирующая IO - все еще боль, чтобы заставить Вашу голову вокруг себя (по крайней мере, я нахожу это), но по крайней мере это осуществимо. (Лично я предпочитаю .NET стиль асинхронного ввода-вывода, но это другой вопрос.)

I обычно используют блокирующий ввод-вывод: для большинства задач это все, что мне нужно, и я не получу значительного выигрыша от использования неблокирующего ввода-вывода. В некоторых случаях (например, в том, который вы упомянули) неблокируемый ввод-вывод - это действительно единственный способ продвинуться вперед, если вы хотите сохранить поток.

Я рекомендую вам узнать об этом, поиграть с ним, а затем использовать суждение, чтобы решить, когда использовать его в рабочем коде. Я бы не советовал начинать использовать его везде ...

1 голос
/ 15 сентября 2009

Да, NIO очень полезен. С NIO тоже немного сложно работать. В зависимости от ваших потребностей вы можете рассмотреть возможность использования каркасов, которые обертывают NIO, например grizzly или mina Grizzly - это сетевая часть сервера приложений glassfish от sun Oracle.

Mina - это инфраструктура сетевых приложений от Apache.org.

Лично я предпочитаю гризли, но это только я.

...