Spec-Zone .ru
спецификации, руководства, описания, API
|
public abstract class AbstractSelectableChannel extends SelectableChannel
Этот класс определяет методы, которые обрабатывают механику регистрации канала, deregistration, и закрытия. Это поддерживает текущий режим блокирования этого канала так же как его текущий набор ключей выбора. Это выполняет всю синхронизацию, требуемую реализовывать SelectableChannel
спецификация. Реализации краткого обзора, который защищенные методы, определенные в этом классе, не должны синхронизировать против других потоков, которые могли бы быть заняты теми же самыми операциями.
Модификатор | Конструктор и Описание |
---|---|
protected |
AbstractSelectableChannel(SelectorProvider provider)
Инициализирует новый экземпляр этого класса.
|
Модификатор и Тип | Метод и Описание |
---|---|
Объект |
blockingLock()
Получает объект на который
configureBlocking и register методы синхронизируются. |
SelectableChannel |
configureBlocking(boolean block)
Корректирует режим блокирования этого канала.
|
protected void |
implCloseChannel()
Завершения этот канал.
|
protected abstract void |
implCloseSelectableChannel()
Завершения этот выбираемый канал.
|
protected abstract void |
implConfigureBlocking(boolean block)
Корректирует режим блокирования этого канала.
|
boolean |
isBlocking()
Говорит, блокирует ли каждая работа ввода-вывода на этом канале, пока это не завершится.
|
boolean |
isRegistered()
Говорит, регистрируется ли этот канал в настоящий момент в каких-либо селекторах.
|
SelectionKey |
keyFor(Selector sel)
Получает ключ, представляющий регистрацию канала с данным селектором.
|
SelectorProvider |
provider()
Возвращает провайдера, который создал этот канал.
|
SelectionKey |
register(Selector sel, int ops, Object att)
Регистры этот канал с данным селектором, возвращая ключ выбора.
|
register, validOps
begin, close, end, isOpen
protected AbstractSelectableChannel(SelectorProvider provider)
public final SelectorProvider provider()
provider
в классе SelectableChannel
public final boolean isRegistered()
SelectableChannel
Из-за свойственной задержки между ключевой отменой и каналом deregistration, канал может остаться зарегистрированным в течение некоторого времени после того, как все его ключи были отменены. Канал может также остаться зарегистрированным в течение некоторого времени после того, как он закрывается.
isRegistered
в классе SelectableChannel
public final SelectionKey keyFor(Selector sel)
SelectableChannel
keyFor
в классе SelectableChannel
public final SelectionKey register(Selector sel, int ops, Object att) throws ClosedChannelException
Этот метод сначала проверяет, что этот канал открыт и что данный начальный набор интереса допустим.
Если этот канал уже регистрируется в данном селекторе тогда ключевое представление выбора, что регистрация возвращается после установки ее набора интереса к данному значению.
Иначе этот канал еще не был зарегистрирован в данном селекторе, таким образом, register
метод селектора вызывается, содержа соответствующие блокировки. Получающийся ключ добавляется к набору ключей этого канала прежде, чем быть возвращенным.
register
в классе SelectableChannel
sel
- Селектор, в котором должен быть зарегистрирован этот каналops
- Интерес устанавливается для получающегося ключаatt
- Присоединение для получающегося ключа; может быть nullClosedSelectorException
- Если селектор закрываетсяIllegalBlockingModeException
- Если этот канал находится в блокировании режимаIllegalSelectorException
- Если этот канал не создавался тем же самым провайдером как данный селекторCancelledKeyException
- Если этот канал в настоящий момент регистрируется в данном селекторе, но соответствующий ключ был уже отмененIllegalArgumentException
- Если немного в наборе ops не соответствует работе, которая поддерживается этим каналом, то есть, если set & ~validOps() != 0ClosedChannelException
- Если этот канал закрываетсяprotected final void implCloseChannel() throws IOException
Этот метод, который определяется в AbstractInterruptibleChannel
класс и вызывается close
метод, поочередно вызывает implCloseSelectableChannel
метод, чтобы выполнить фактическую работу закрытия этого канала. Это тогда отменяет все ключи этого канала.
implCloseChannel
в классе AbstractInterruptibleChannel
IOException
- Если ошибка ввода-вывода происходит, закрывая каналprotected abstract void implCloseSelectableChannel() throws IOException
Этот метод вызывается close
метод, чтобы выполнить фактическую работу закрытия канала. Этот метод только вызывается, если канал еще не был закрыт, и это никогда не вызывается не раз.
Реализация этого метода должна устроить любой другой поток, который блокируется в работе ввода-вывода на этот канал, чтобы сразу возвратиться, или выдавая исключение или возвращаясь обычно.
IOException
public final boolean isBlocking()
SelectableChannel
Если этот канал закрывается тогда, значение, возвращенное этим методом, не определяется.
isBlocking
в классе SelectableChannel
public final Object blockingLock()
SelectableChannel
configureBlocking
и register
методы синхронизируются. Это часто полезно в реализации адаптеров, которые требуют, чтобы определенный режим блокирования сохранялся в течение короткого периода времени. blockingLock
в классе SelectableChannel
public final SelectableChannel configureBlocking(boolean block) throws IOException
Если данное блокирование режима отличается от текущего режима блокирования тогда, этот метод вызывает implConfigureBlocking
метод, содержа соответствующие блокировки, чтобы изменить режим.
configureBlocking
в классе SelectableChannel
block
- Если true тогда этот канал будет помещен в блокирование режима; если false тогда это будет помещено, неблокируя режимClosedChannelException
- Если этот канал закрываетсяIOException
- Если ошибка ввода-вывода происходитprotected abstract void implConfigureBlocking(boolean block) throws IOException
Этот метод вызывается configureBlocking
метод, чтобы выполнить фактическую работу изменения режима блокирования. Этот метод только вызывается, если новый режим отличается от текущего режима.
IOException
- Если ошибка ввода-вывода происходит
Для дальнейшей ссылки API и документации разработчика, см.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.