Spec-Zone.ru › OpenJDK 8

Пакет java.nio.channels

Определяет каналы, представляющие подключения к сущностям, способным выполнять операции ввода-вывода, такие как файлы и сокеты; определяет селекторы для операций ввода-вывода с множественной выборкой и без блокировки.

См.: Описание

Интерфейс Описание
AsynchronousByteChannel

Асинхронный канал, который может читать и записывать байты.

AsynchronousChannel

Канал, поддерживающий асинхронные операции ввода-вывода.

ByteChannel

Канал, который может читать и записывать байты.

Channel

Центр для операций ввода-вывода.

CompletionHandler<V,A>

Обработчик для потребления результата асинхронной операции ввода-вывода.

GatheringByteChannel

Канал, который может записывать байты из последовательности буферов.

InterruptibleChannel

Канал, который может быть асинхронно закрыт и прерван.

MulticastChannel

Сеть канала, поддерживающая многоадресную рассылку по протоколу IP.

NetworkChannel

Канал к сетевому сокету.

ReadableByteChannel

Канал, который может читать байты.

ScatteringByteChannel

Канал, который может читать байты в последовательность буферов.

SeekableByteChannel

Канал байтов, который поддерживает текущую позицию и позволяет изменить её.

WritableByteChannel

Канал, который может записывать байты.

Класс Описание
AsynchronousChannelGroup

Группа асинхронных каналов для совместного использования ресурсов.

AsynchronousFileChannel

Асинхронный канал для чтения, записи и манипулирования файлом.

AsynchronousServerSocketChannel

Асинхронный канал для сокетов прослушивания потокового типа.

AsynchronousSocketChannel

Асинхронный канал для сокетов подключения потокового типа.

Channels

Утилитарные методы для каналов и потоков.

DatagramChannel

Выбираемый канал для сокетов дейтаграмм.

FileChannel

Канал для чтения, записи, отображения и манипулирования файлом.

FileChannel.MapMode

Безопасная перечисление режимов отображения файлов.

FileLock

Токен, представляющий блокировку региона файла.

MembershipKey

Токен, представляющий членство в группе многоадресной рассылки по протоколу IP.

Pipe

Пара каналов, которая реализует однонаправленную трубу.

Pipe.SinkChannel

Канал, представляющий выход для записи в Pipe.

Pipe.SourceChannel

Канал, представляющий вход для чтения из Pipe.

SelectableChannel

Канал, который может быть выбран с помощью Selector.

SelectionKey

Токен, представляющий регистрацию SelectableChannel с Selector.

Selector

Мультиплексор объектов SelectableChannel.

ServerSocketChannel

Выбираемый канал для сокетов прослушивания потокового типа.

SocketChannel

Выбираемый канал для сокетов подключения потокового типа.

Исключение Описание
AcceptPendingException

Исключение без проверки типа, выбрасываемое, когда попытка начать операцию accept на канале, и предыдущая операция accept еще не завершена.

AlreadyBoundException

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

AlreadyConnectedException

Исключение без проверки типа, выбрасываемое, когда производится попытка подключить SocketChannel, который уже подключён.

AsynchronousCloseException

Исключение с проверкой типа, полученное потоком, когда другой поток закрывает канал или часть канала, в которой он заблокирован в операции ввода-вывода.

CancelledKeyException

Исключение без проверки типа, выбрасываемое, когда производится попытка использовать ключ выбора, который больше недействителен.

ClosedByInterruptException

Исключение с проверкой типа, полученное потоком, когда другой поток прерывает его, в то время как он заблокирован в операции ввода-вывода на канале.

ClosedChannelException

Исключение с проверкой типа, выбрасываемое, когда производится попытка вызвать или завершить операцию ввода-вывода на канале, который закрыт или, по крайней мере, закрыт для этой операции.

ClosedSelectorException

Исключение без проверки типа, выбрасываемое, когда производится попытка вызвать операцию ввода-вывода на закрытом селекторе.

ConnectionPendingException

Исключение без проверки типа, выбрасываемое, когда производится попытка подключить SocketChannel, для которого уже выполняется операция бесклокирующего подключения.

FileLockInterruptionException

Исключение с проверкой типа, полученное потоком, когда другой поток прерывает его, в то время как он ожидает получить блокировку файла.

IllegalBlockingModeException

Исключение без проверки типа, выбрасываемое, когда операция, зависящая от режима блокировки, вызывается на канале в неверном режиме блокировки.

IllegalChannelGroupException

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

IllegalSelectorException

Исключение без проверки типа, выбрасываемое, когда производится попытка зарегистрировать канал с селектором, который не был создан поставщиком, который создал канал.

InterruptedByTimeoutException

Исключение с проверкой типа, полученное потоком, когда истекает срок ожидания, прежде чем асинхронная операция завершится.

NoConnectionPendingException

Исключение без проверки типа, выбрасываемое, когда метод finishConnect SocketChannel вызывается без предварительного успешного вызова метода connect.

NonReadableChannelException

Исключение без проверки типа, выбрасываемое, когда производится попытка чтения из канала, который изначально не был открыт для чтения.

NonWritableChannelException

Исключение без проверки типа, выбрасываемое, когда производится попытка записи в канал, который изначально не был открыт для записи.

NotYetBoundException

Исключение без проверки типа, выбрасываемое, когда производится попытка вызвать операцию ввода-вывода на канале серверного сокета, который еще не привязан.

NotYetConnectedException

Исключение без проверки типа, выбрасываемое, когда производится попытка вызвать операцию ввода-вывода на канале сокета, который еще не подключен.

OverlappingFileLockException

Исключение без проверки типа, выбрасываемое, когда производится попытка получить блокировку региона файла, который перекрывается регионом, уже заблокированным той же виртуальной машиной Java, или когда другой поток уже ожидает заблокировать перекрывающийся регион того же файла.

ReadPendingException

Исключение без проверки типа, выбрасываемое, когда производится попытка чтения из асинхронного канала сокета, и предыдущее чтение еще не завершено.

ShutdownChannelGroupException

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

UnresolvedAddressException

Исключение без проверки типа, выбрасываемое, когда производится попытка вызвать сетевую операцию на неопределённый адрес сокета.

UnsupportedAddressTypeException

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

WritePendingException

Исключение без проверки типа, выбрасываемое, когда производится попытка записи в асинхронный канал сокета, и предыдущая запись еще не завершена.

Описание пакета java.nio.channels

Определяет каналы, представляющие подключения к сущностям, способным выполнять операции ввода-вывода, такие как файлы и сокеты; определяет селекторы для многопоточных, неблокирующих операций ввода-вывода.

Каналы Описание
Channel Центр для операций ввода-вывода
ReadableByteChannel Может читать в буфер
ScatteringByteChannel Может читать в последовательность буферов
WritableByteChannel Может записывать из буфера
GatheringByteChannel Может записывать из последовательности буферов
ByteChannel Может читать/записывать в/из буфера
SeekableByteChannel ByteChannel подключённый к сущности, содержащей последовательность байтов переменной длины
AsynchronousChannel Поддерживает асинхронные операции ввода-вывода.
AsynchronousByteChannel Может асинхронно читать и записывать байты
NetworkChannel Канал к сетевому сокету
MulticastChannel Может присоединяться к группам интернет-мультивещания (IP-мультивещания)
Channels Утилитарные методы для взаимодействия каналов/потоков

Канал представляет открытое соединение с сущностью, такой как аппаратное устройство, файл, сетевой сокет или компонент программы, способный выполнять одну или несколько различных операций ввода-вывода, например, чтение или запись. Как указано в интерфейсе Channel, каналы могут быть открытыми или закрытыми, и они являются как асинхронно закрываемыми, так и прерываемыми.

Интерфейс Channel расширяется несколькими другими интерфейсами.

Интерфейс ReadableByteChannel определяет метод read, который считывает байты из канала в буфер; аналогично, интерфейс WritableByteChannel определяет метод write, который записывает байты из буфера в канал. Интерфейс ByteChannel объединяет эти два интерфейса для распространённого случая каналов, которые могут как читать, так и записывать байты. Интерфейс SeekableByteChannel расширяет интерфейс ByteChannel методами для query и modify текущей позиции канала и его size.

Интерфейсы ScatteringByteChannel и GatheringByteChannel расширяют интерфейсы ReadableByteChannel и WritableByteChannel соответственно, добавляя методы read и write, которые принимают последовательность буферов, а не один буфер.

Интерфейс NetworkChannel определяет методы для bind сокета канала, получения адреса, к которому привязан сокет, а также методы для get и set параметров сокета. Интерфейс MulticastChannel определяет методы присоединения к группам интернет-мультивещания (IP-мультивещания).

Утилитарный класс Channels определяет статические методы, которые поддерживают взаимодействие классов потоков пакета java.io с классами каналов этого пакета. Соответствующий канал может быть создан из InputStream или OutputStream, и наоборот, InputStream или OutputStream может быть создан из канала. Можно создать Reader, использующий заданную кодировку для декодирования байтов из заданного канала считывания байтов, и наоборот, можно создать Writer, использующий заданную кодировку для кодирования символов в байты и записи их в заданный канал записи байтов.

Каналы файлов Описание
FileChannel Чтение, запись, отображение и управление файлами
FileLock Блокировка файла (или области файла)
MappedByteBuffer Прямой буфер байтов, сопоставленный с областью файла

Класс FileChannel поддерживает обычные операции чтения байтов из и записи байтов в канал, подключённый к файлу, а также операции запроса и изменения текущей позиции файла и обрезки файла до определённого размера. Он определяет методы для получения блокировок всего файла или определённой области файла; эти методы возвращают экземпляры класса FileLock. Наконец, он определяет методы для принудительной записи обновлений файла на устройство хранения, содержащее его, для эффективного переноса байтов между файлом и другими каналами и для отображения области файла напрямую в памяти.

Создаётся FileChannel путём вызова одного из его статических методов open или вызова метода getChannel класса FileInputStream, FileOutputStream или RandomAccessFile для возврата канала файла, подключённого к тому же основному файлу, что и класс java.io.

Мультиплексированные, неблокирующие операции ввода-вывода

Описание

SelectableChannel Канал, который может быть мультиплексирован
DatagramChannel Канал к сокету с ориентированным на датаграммы протоколом
Pipe.SinkChannel Конечная точка записи канала в трубе
Pipe.SourceChannel Конечная точка чтения канала в трубе
ServerSocketChannel Канал к сокету прослушивания с ориентированным на поток протоколом
SocketChannel Канал для сокета подключения с ориентированным на поток протоколом
Selector Мультиплексор выбираемых каналов
SelectionKey Токен, представляющий регистрацию
канала в селекторе
Pipe Два канала, образующих однонаправленную трубу

Многопоточные, неблокирующие операции ввода-вывода, которые значительно масштабируемы по сравнению с ориентированными на поток, блокирующими операциями ввода-вывода, обеспечиваются селекторами, выбираемыми каналами и ключами выбора.

Селектор — это мультиплексор выбираемых каналов, которые, в свою очередь, являются особым типом канала, который можно поместить в неблокирующий режим. Для выполнения многопоточных операций ввода-вывода сначала создаётся один или несколько выбираемых каналов, они помещаются в неблокирующий режим и registered с селектором. Регистрация канала определяет набор операций ввода-вывода, которые будут проверяться селектором на готовность, и возвращает ключ выбора, который представляет регистрацию.

После того, как некоторые каналы были зарегистрированы в селекторе, можно выполнить операцию выбора, чтобы узнать, какие каналы, если таковые имеются, стали готовы выполнить одну или несколько операций, в отношении которых ранее была объявлена заинтересованность. Если канал готов, то ключ, возвращённый при его регистрации, будет добавлен в набор выбранных ключей селектора. Набор ключей и ключи в нём можно просмотреть, чтобы определить операции, для которых каждый канал готов. Из каждого ключа можно получить соответствующий канал, чтобы выполнить необходимые операции ввода-вывода.

То, что ключ выбора указывает на готовность канала к выполнению какой-либо операции, является подсказкой, а не гарантией, что такую операцию может выполнить поток без блокировки. Крайне важно, чтобы код, выполняющий многопоточные операции ввода-вывода, был написан так, чтобы игнорировать эти подсказки, когда они оказываются неверными.

Этот пакет определяет классы выбираемых каналов, соответствующие классам DatagramSocket, ServerSocket и Socket, определённым в пакете java.net. Были внесены незначительные изменения в эти классы для поддержки сокетов, связанных с каналами. В этом пакете также определён простой класс, реализующий однонаправленные трубы. Во всех случаях новый выбираемый канал создаётся путём вызова статического метода open соответствующего класса. Если каналу требуется связанный сокет, сокет будет создан в результате этой операции.

Реализацию селекторов, выбираемых каналов и ключей выбора можно заменить, «подключив» альтернативное определение или экземпляр класса SelectorProvider, определённого в пакете java.nio.channels.spi. Не ожидается, что многие разработчики будут использовать эту возможность; она предоставлена в основном для того, чтобы продвинутые пользователи могли воспользоваться механизмами многопоточного ввода-вывода, специфичными для операционной системы, когда требуется очень высокая производительность.

Большая часть учёта и синхронизации, необходимых для реализации абстракций многоканального ввода/вывода, выполняется классами AbstractInterruptibleChannel, AbstractSelectableChannel, AbstractSelectionKey и AbstractSelector в пакете java.nio.channels.spi. При определении пользовательского поставщика селекторов следует наследоваться только от классов AbstractSelector и AbstractSelectionKey; пользовательские классы каналов должны расширять соответствующие подклассы SelectableChannel, определённые в этом пакете.

Асинхронный ввод/вывод Описание
AsynchronousFileChannel Асинхронный канал для чтения, записи и манипулирования файлом
AsynchronousSocketChannel Асинхронный канал для сокета с потоковым соединением
AsynchronousServerSocketChannel Асинхронный канал для сокета с потоковым прослушиванием
CompletionHandler Обработчик для потребления результата асинхронной операции
AsynchronousChannelGroup Группа асинхронных каналов для совместного использования ресурсов

Asynchronous channels — это особый тип канала, способный к асинхронным операциям ввода/вывода. Асинхронные каналы неблокирующие и определяют методы для инициирования асинхронных операций, возвращая Future, представляющий ожидаемый результат каждой операции. Future может использоваться для опроса или ожидания результата операции. Асинхронные операции ввода/вывода также могут указать CompletionHandler для вызова при завершении операции. Обработчик завершения — это предоставляемый пользователем код, который выполняется для потребления результата операции ввода/вывода.

Этот пакет определяет классы асинхронных каналов, которые подключены к сокету с потоковым соединением или прослушиванием, или к сокету с дейтаграммой. Он также определяет класс AsynchronousFileChannel для асинхронного чтения, записи и манипулирования файлом. Как и FileChannel, он поддерживает операции обрезки файла до определенного размера, принудительной записи обновлений файла на устройство хранения или получения блокировок на весь файл или на определённый фрагмент файла. В отличие от FileChannel, он не определяет методов для прямого отображения фрагмента файла в память. Если требуется работа с памятью, то можно использовать FileChannel.

Асинхронные каналы привязаны к группе асинхронных каналов для совместного использования ресурсов. Группа имеет связанный ExecutorService, в который отправляются задачи для обработки событий ввода/вывода и диспетчеризации обработчиков завершения, которые потребляют результат асинхронных операций, выполненных на каналах в группе. Группу можно указать при создании канала, или канал можно привязать к группе по умолчанию. Искушённые пользователи могут создать собственные группы асинхронных каналов или настроить ExecutorService, которая будет использоваться для группы по умолчанию.

Как и в случае с селекторами, реализацию асинхронных каналов можно заменить, подключив альтернативное определение или экземпляр класса AsynchronousChannelProvider, определённого в пакете java.nio.channels.spi. Не ожидается, что многие разработчики будут активно использовать эту возможность; она предоставляется в первую очередь для того, чтобы искушённые пользователи могли воспользоваться механизмами асинхронного ввода/вывода, специфичными для операционной системы, когда требуется очень высокая производительность.

Если не указано иное, передача аргумента null в конструктор или метод любого класса или интерфейса в этом пакете приведёт к сбрасыванию исключения NullPointerException.

С тех пор:
1.4

© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API