Spec-Zone.ru › OpenJDK 21

Интерфейс AsynchronousByteChannel

Все суперинтерфейсы:
AsynchronousChannel, AutoCloseable, Channel, Closeable
Все известные реализующие классы:
AsynchronousSocketChannel
public interface AsynchronousByteChannel extends AsynchronousChannel
Асинхронный канал, который может читать и записывать байты.

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

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

С тех пор:
1.7
См. также:
  • Channels.newInputStream(AsynchronousByteChannel)
  • Channels.newOutputStream(AsynchronousByteChannel)

Краткое описание методов

Модификатор и тип Метод Описание
Future<Integer> read(ByteBuffer dst)
Читает последовательность байтов из этого канала в указанный буфер.
<A> void read(ByteBuffer dst, A attachment, CompletionHandler<Integer,? super A> handler)
Читает последовательность байтов из этого канала в указанный буфер.
Future<Integer> write(ByteBuffer src)
Записывает последовательность байтов в этот канал из указанного буфера.
<A> void write(ByteBuffer src, A attachment, CompletionHandler<Integer,? super A> handler)
Записывает последовательность байтов в этот канал из указанного буфера.

Методы, объявленные в интерфейсе java.nio.channels.AsynchronousChannel

close

Методы, объявленные в интерфейсе java.nio.channels.Channel

isOpen

Подробное описание методов

read

<A> void read(ByteBuffer dst, A attachment, CompletionHandler<Integer,? super A> handler)
Читает последовательность байтов из этого канала в указанный буфер.

Этот метод инициирует асинхронную операцию чтения, чтобы прочитать последовательность байтов из этого канала в указанный буфер. Параметр handler — это обработчик завершения, который вызывается по завершении (или при ошибке) операции чтения. Результат, переданный обработчику завершения, — это количество прочитанных байтов или -1, если байты не могли быть прочитаны, потому что канал достиг конца потока.

Операция чтения может прочитать до r байтов из канала, где r — количество оставшихся байтов в буфере, то есть dst.remaining() в момент попытки чтения. Если r равно 0, операция чтения завершается немедленно с результатом 0 без инициализации операции ввода-вывода.

Предположим, что прочитана последовательность байтов длиной n, где 0 < n <= r. Эта последовательность байтов будет перенесена в буфер таким образом, что первый байт последовательности будет расположен по индексу p, а последний байт — по индексу p + n - 1, где p — позиция буфера в момент выполнения чтения. По завершении позиция буфера будет равна p + n; его предел не изменится.

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

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

Тип параметров:
A - Тип привязки
Параметры:
dst - Буфер, в который будут перенесены байты
attachment - Объект, который будет присоединен к операции ввода-вывода; может быть null
handler - Обработчик завершения
Исключения:
IllegalArgumentException - Если буфер только для чтения
ReadPendingException - Если канал не допускает более одной операции чтения одновременно, и предыдущая операция чтения не завершена
ShutdownChannelGroupException - Если канал ассоциирован с group, который завершен

read

Future<Integer> read(ByteBuffer dst)
Читает последовательность байтов из этого канала в указанный буфер.

Этот метод инициирует асинхронную операцию чтения, чтобы прочитать последовательность байтов из этого канала в указанный буфер. Метод работает точно так же, как метод read(ByteBuffer,Object,CompletionHandler), за исключением того, что вместо указания обработчика завершения, этот метод возвращает Future представляющий ожидаемый результат. Метод get Future возвращает количество прочитанных байтов или -1 если байты не могли быть прочитаны, потому что канал достиг конца потока.

Параметры:
dst - Буфер, в который будут перенесены байты
Возвращает:
Future, представляющий результат операции
Исключения:
IllegalArgumentException - Если буфер только для чтения
ReadPendingException - Если канал не допускает более одной операции чтения одновременно, и предыдущая операция чтения не завершена

write

<A> void write(ByteBuffer src, A attachment, CompletionHandler<Integer,? super A> handler)
Записывает последовательность байтов в этот канал из указанного буфера.

Этот метод инициирует асинхронную операцию записи, чтобы записать последовательность байтов в этот канал из указанного буфера. Параметр handler — это обработчик завершения, который вызывается по завершении (или при ошибке) операции записи. Результат, переданный обработчику завершения, — это количество записанных байтов.

Операция записи может записать до r байтов в канал, где r — количество оставшихся байтов в буфере, то есть src.remaining() в момент попытки записи. Если r равно 0, операция записи завершается немедленно с результатом 0 без инициализации операции ввода-вывода.

Предположим, что записана последовательность байтов длиной n, где 0 < n <= r. Эта последовательность байтов будет перенесена из буфера, начиная с индекса p, где p — позиция буфера в момент выполнения записи; индекс последнего записанного байта будет p + n - 1. По завершении позиция буфера будет равна p + n; его предел не изменится.

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

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

Тип параметров:
A - Тип привязки
Параметры:
src - Буфер, из которого будут извлечены байты
attachment - Объект, который будет присоединен к операции ввода-вывода; может быть null
handler - Объект обработчика завершения
Исключения:
WritePendingException - Если канал не допускает более одной операции записи одновременно, и предыдущая операция записи не завершена
ShutdownChannelGroupException - Если канал ассоциирован с group, который завершен

write

Future<Integer> write(ByteBuffer src)
Записывает последовательность байтов в этот канал из указанного буфера.

Этот метод инициирует асинхронную операцию записи, чтобы записать последовательность байтов в этот канал из указанного буфера. Метод работает точно так же, как метод write(ByteBuffer,Object,CompletionHandler), за исключением того, что вместо указания обработчика завершения, этот метод возвращает Future представляющий ожидаемый результат. Метод get Future возвращает количество записанных байтов.

Параметры:
src - Буфер, из которого будут извлечены байты
Возвращает:
Future, представляющий результат операции
Исключения:
WritePendingException - Если канал не допускает более одной операции записи одновременно, и предыдущая операция записи не завершена

© 1993, 2023, 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.
https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/nio/channels/AsynchronousByteChannel.html

Spec-Zone.ru

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