Spec-Zone .ru
спецификации, руководства, описания, API
|
public interface AsynchronousByteChannel extends AsynchronousChannel
Некоторые каналы, возможно, не позволяют больше чем одно чтение или пишут, чтобы быть выдающимися в любой момент времени. Если поток вызывает метод чтения прежде, чем предыдущая операция чтения завершилась тогда a ReadPendingException
будет брошен. Точно так же, если метод записи вызывается прежде, чем предыдущая запись завершилась тогда WritePendingException
бросается. Могут ли другие виды операций ввода-вывода продолжиться одновременно с операцией чтения, зависит от типа канала.
Отметьте это ByteBuffers
не безопасны для использования многократными параллельными потоками. Когда операция чтения или операция записи инициируются тогда, забота должна быть проявлена, чтобы гарантировать, что к буферу не получают доступ, пока работа не завершается.
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)
Пишет последовательность байтов к этому каналу от данного буфера.
|
близко
<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; его предел не будет изменяться.
Буферы не безопасны для использования многократными параллельными потоками, таким образом, забота должна быть проявлена, чтобы не получить доступ к буферу, пока работа не завершилась.
В любое время может быть вызван этот метод. Некоторые типы канала, возможно, не позволяют больше чем одному чтению быть выдающимся в любой момент времени. Если поток инициирует операцию чтения прежде, чем предыдущая операция чтения завершилась тогда a ReadPendingException
будет брошен.
dst
- Буфер, в который должны быть переданы байтыattachment
- Объект присоединить к работе ввода-вывода; может быть null
handler
- Обработчик завершенияIllegalArgumentException
- Если буфер только для чтенияReadPendingException
- Если канал не позволяет больше чем одному чтению быть выдающимся, и предыдущее чтение не завершилосьShutdownChannelGroupException
- Если канал связывается с a group
это завершилосьFuture<Integer> read(ByteBuffer dst)
Этот метод инициирует асинхронную операцию чтения, чтобы считать последовательность байтов от этого канала в данный буфер. Метод ведет себя точно тем же самым способом как read(ByteBuffer,Object,CompletionHandler)
метод за исключением того, что вместо того, чтобы определить обработчик завершения, этот метод возвращает a Future
представление результата на ожидании. Future
's get
метод возвращает число чтения байтов или -1
если никакие байты не могли бы быть считаны, потому что канал достиг конца потока.
dst
- Буфер, в который должны быть переданы байтыIllegalArgumentException
- Если буфер только для чтенияReadPendingException
- Если канал не позволяет больше чем одному чтению быть выдающимся, и предыдущее чтение не завершилось<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; его предел не будет изменяться.
Буферы не безопасны для использования многократными параллельными потоками, таким образом, забота должна быть проявлена, чтобы не получить доступ к буферу, пока работа не завершилась.
В любое время может быть вызван этот метод. Некоторые типы канала, возможно, не позволяют больше чем одной записи быть выдающейся в любой момент времени. Если поток инициирует операцию записи прежде, чем предыдущая операция записи завершилась тогда a WritePendingException
будет брошен.
src
- Буфер, от которого должны быть получены байтыattachment
- Объект присоединить к работе ввода-вывода; может быть null
handler
- Объект-обработчик завершенияWritePendingException
- Если канал не позволяет больше чем одной записи быть выдающейся, и предыдущая запись не завершиласьShutdownChannelGroupException
- Если канал связывается с a group
это завершилосьFuture<Integer> write(ByteBuffer src)
Этот метод инициирует асинхронную операцию записи, чтобы записать последовательность байтов к этому каналу от данного буфера. Метод ведет себя точно тем же самым способом как write(ByteBuffer,Object,CompletionHandler)
метод за исключением того, что вместо того, чтобы определить обработчик завершения, этот метод возвращает a Future
представление результата на ожидании. Future
's get
метод возвращает число записанных байтов.
src
- Буфер, от которого должны быть получены байтыWritePendingException
- Если канал не позволяет больше чем одной записи быть выдающейся, и предыдущая запись не завершилась
Для дальнейшей ссылки API и документации разработчика, см.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.