четверг, 7 февраля 2013 г.

что делает selector java

Рисунок 1. Поточная модель использует потоки и байты; NIO модель использует каналы и буфера.

Основные потоки, InputStream и OutputStream, могут читать и записывать байты; подклассы этих поточных классов могут читать и записывать другие типы данных. В NIO все данные читаются и записываются через буфера. Смотрите сравнение двух моделей на Рисунке 1.

NIO основывается на двух понятиях, каналах (channels) и буферах (buffers). Каналы являются примерным аналогом потоков, используемых в поточной модели. Буфера не имеют аналогов в поточной модели.

Замечание! Вы можете скачать исходные коды этой статьи из Ресурсов.

Для начала, рассмотрим, как NIO работает, а затем внедрим его в высокоскоростном серверном приложении.

Новые библиотеки ввода/вывода (NIO) введённые в стандартной редакции Java 2 (J2SE) версии 1.4 нацелены на решение данной проблемы. NIO использует основанную на буферах (buffer) модель. Это значит, что NIO работает с данными в основном большими блоками. Это исключает издержки, вызываемые использованием поточной модели, и позволяет использовать службы уровня операционной системы, когда это возможно, для достижения максимальной пропускной способности.

Java использует очень изящную модель ввода/вывода, основанную на идее потоков (stream). Поток является объектом, который порождает или потребляет строки или байты. Потоки могут быть соединены вместе для реализации операций фильтрации и расширенны для обработки других типов данных. Поточная модель очень гибкая, но не слишком быстрая. Это подходит для большинства приложений, но некоторые системы требуют максимальной скорости, какую только может обеспечить аппаратное обеспечение. Иногда поточная модель не может обеспечить этого.

Законченный сервер

Конечный результат

Возвращаемся в начало

Ожидание входящих данных

Получение соединения

Ожидание входящих соединений

Использование Selector

Пример приложения

Стандартная редакция Java 2 (J2SE) в версии 1.4 ввела Новые библиотеки Ввода/Вывода (New Input/Output NIO), предназначенные для реализации высокопроизводительного ввода/вывода в Java приложениях. NIO использует модель ввода/вывода значительно отличающуюся от использованной в первоначальных библиотеках ввода/вывода. Эта статья пошагово продемонстрирует использование службы select предоставляемой NIO. select даёт вашему серверу возможность обрабатывать огромное количество данных поступающих от множества соединенний. После короткого введения в библиотеки NIO, эта статья рассматривает теорию, лежащую в основе службы select и разбирает исходный код работающего сервера, использующего select. (В оригинальной версии на английском языке 2000 слов;)

Новые библиотеки ввода/вывода ускорят ваш сервер.

Использование select для высокоскоростного сетевого взаимодействия

Java: СтатьиИспользование select для высокоскоростного сетевого взаимодействия

Использование select для высокоскоростного сетевого взаимодействия

Комментариев нет:

Отправить комментарий