Spec-Zone .ru
спецификации, руководства, описания, API
|
public abstract class SelectionKey extends Object
SelectableChannel
с a Selector
. Ключ выбора создается каждый раз, когда канал регистрируется в селекторе. Ключ остается допустимым, пока он не отменяется, вызывая Ключ выбора содержит два набора работы, представленные как целочисленные значения. Каждый бит набора работы обозначает категорию выбираемых операций, которые поддерживаются каналом ключа. Набор интереса определяет, какие категории работы будут протестированы на готовность в следующий раз, когда один из методов выбора селектора вызывается. Набор интереса инициализируется со значением, данным, когда ключ создается; это может позже быть изменено через Готовый набор идентифицирует категории работы, к которым канал ключа был обнаружен, чтобы быть готов селектором ключа. Готовый набор инициализируется, чтобы обнулить, когда ключ создается; это может позже быть обновлено селектором во время работы выбора, но это не может быть обновлено непосредственно. То, что готовый набор ключа выбора указывает, что его канал готов к некоторой категории работы, является подсказкой, но не гарантией, что работа в такой категории может быть выполнена потоком, не заставляя поток блокировать. Готовый набор, наиболее вероятно, сразу будет точен после завершения работы выбора. Это, вероятно, будет сделано неточным внешними событиями и операциями ввода-вывода, которые вызываются на соответствующий канал. Этот класс определяет все известные установленные в работу биты, но точно какие биты поддерживаются данным каналом, зависит от типа канала. Каждый подкласс Часто необходимо связать некоторые специализированные данные с ключом выбора, например объект, который представляет состояние высокоуровневого протокола и обрабатывает уведомления о готовности, чтобы реализовать тот протокол. Ключи выбора поэтому поддерживают присоединение единственного произвольного объекта к ключу. Объект может быть присоединен через Ключи выбора безопасны для использования многократными параллельными потоками. Операции чтения и записи набора интереса будут, вообще, синхронизироваться с определенными операциями селектора. Точно то, как эта синхронизация выполняется, является зависящим от реализации: В наивной реализации, читая или пишущий набор интереса может блокировать неопределенно, если работа выбора уже происходит; в высокоэффективной реализации, читая или пишущий набор интереса может блокировать кратко, если вообще. В любом случае работа выбора будет всегда использовать установленное в интерес значение, которое было текущим в настоящее время, который начала работа. cancel
метод, закрывая его канал, или закрывая его селектор. Отмена ключа сразу не удаляет это из своего селектора; это вместо этого добавляется к отмененному набору ключей селектора для удаления во время следующей работы выбора. Законность ключа может быть протестирована, вызывая isValid
метод.
interestOps(int)
метод. SelectableChannel
определяет validOps()
метод, который возвращает набор, идентифицирующий только те операции, которые поддерживаются каналом. Попытка установить или протестировать установленный в работу бит, который не поддерживается каналом ключа, приведет к соответствующему исключению на этапе выполнения. attach
метод и затем позже полученный через attachment
метод.
SelectableChannel
, Selector
Модификатор и Тип | Поле и Описание |
---|---|
static int |
OP_ACCEPT
Установленный в работу бит для сокета - принимает операции.
|
static int |
OP_CONNECT
Установленный в работу бит для операций подключения сокета.
|
static int |
OP_READ
Установленный в работу бит для операций чтения.
|
static int |
OP_WRITE
Установленный в работу бит для операций записи.
|
Модификатор | Конструктор и Описание |
---|---|
protected |
SelectionKey()
Создает экземпляр этого класса.
|
Модификатор и Тип | Метод и Описание |
---|---|
Объект |
attach(Object ob)
Присоединяет данный объект к этому ключу.
|
Объект |
attachment()
Получает текущее присоединение.
|
abstract void |
cancel()
Запросы, что регистрация канала этого ключа с его селектором быть отмененным.
|
abstract SelectableChannel |
channel()
Возвращает канал, для которого создавался этот ключ.
|
abstract int |
interestOps()
Получает набор интереса этого ключа.
|
abstract SelectionKey |
interestOps(int ops)
Наборы набор интереса этого ключа к данному значению.
|
boolean |
isAcceptable()
Тесты, готов ли канал этого ключа принять новое сокетное соединение.
|
boolean |
isConnectable()
Тесты, закончился ли канал этого ключа или, или был не в состоянии закончиться, его работа сокетного соединения.
|
boolean |
isReadable()
Тесты, готов ли канал этого ключа к чтению.
|
abstract boolean |
isValid()
Говорит, допустим ли этот ключ.
|
boolean |
isWritable()
Тесты, готов ли канал этого ключа к записи.
|
abstract int |
readyOps()
Получает набор готовой работы этого ключа.
|
abstract Selector |
selector()
Возвращает селектор, для которого создавался этот ключ.
|
public static final int OP_READ
Предположите, что ключевой набор интереса выбора содержит OP_READ в начале работы выбора. Если селектор обнаружит, что соответствующий канал готов к чтению, достиг конца потока, был удаленно выключен для дальнейшего чтения, или имеет ошибку, ожидая, то это добавит OP_READ к набору готовой работы ключа и добавит ключ к его выбранному набору ключей .
public static final int OP_WRITE
Предположите, что ключевой набор интереса выбора содержит OP_WRITE в начале работы выбора. Если селектор обнаружит, что соответствующий канал готов к записи, был удаленно выключен для дальнейшей записи, или имеет ошибку, ожидая, то это добавит OP_WRITE к готовому набору ключа и добавит ключ к его выбранному набору ключей .
public static final int OP_CONNECT
Предположите, что ключевой набор интереса выбора содержит OP_CONNECT в начале работы выбора. Если селектор обнаружит, что соответствующий канал сокета готов завершить свою последовательность соединения, или имеет ошибку, ожидая, то это добавит OP_CONNECT к готовому набору ключа и добавит ключ к его выбранному набору ключей .
public static final int OP_ACCEPT
Предположите, что ключевой набор интереса выбора содержит OP_ACCEPT в начале работы выбора. Если селектор обнаружит, что соответствующий канал сокета сервера готов принять другое соединение, или имеет ошибку, ожидая, то это добавит OP_ACCEPT к готовому набору ключа и добавит ключ к его выбранному набору ключей .
public abstract SelectableChannel channel()
public abstract Selector selector()
public abstract boolean isValid()
Ключ допустим после создания и остается так, пока это не отменяется, его канал закрывается, или его селектор закрывается.
public abstract void cancel()
Если этот ключ был уже отменен, затем вызывая этот метод, не имеет никакого эффекта. После того, как отмененный, ключ остается навсегда недопустимым.
В любое время может быть вызван этот метод. Это синхронизируется на отмененном наборе ключей селектора, и поэтому может блокировать кратко если вызвано одновременно с отменой или работой выбора, включающей тот же самый селектор.
public abstract int interestOps()
Гарантируется, что возвращенный набор будет только содержать биты работы, которые допустимы для канала этого ключа.
В любое время может быть вызван этот метод. Блокирует ли это, и как долго, является зависящим от реализации.
CancelledKeyException
- Если этот ключ был отмененpublic abstract SelectionKey interestOps(int ops)
В любое время может быть вызван этот метод. Блокирует ли это, и как долго, является зависящим от реализации.
ops
- Новый интерес устанавливаетсяIllegalArgumentException
- Если немного в наборе не соответствует работе, которая поддерживается каналом этого ключа, то есть, если (ops & ~channel().validOps()) != 0CancelledKeyException
- Если этот ключ был отмененpublic abstract int readyOps()
Гарантируется, что возвращенный набор будет только содержать биты работы, которые допустимы для канала этого ключа.
CancelledKeyException
- Если этот ключ был отмененpublic final boolean isReadable()
Вызов этого метода формы k.isReadable() ведет себя точно таким же образом как выражение
k.readyOps() & OP_READ != 0
Если канал этого ключа не поддерживает операции чтения тогда, этот метод всегда возвращает false.
CancelledKeyException
- Если этот ключ был отмененpublic final boolean isWritable()
Вызов этого метода формы k.isWritable() ведет себя точно таким же образом как выражение
k.readyOps() & OP_WRITE != 0
Если канал этого ключа не поддерживает операции записи тогда, этот метод всегда возвращает false.
CancelledKeyException
- Если этот ключ был отмененpublic final boolean isConnectable()
Вызов этого метода формы k.isConnectable() ведет себя точно таким же образом как выражение
k.readyOps() & OP_CONNECT != 0
Если канал этого ключа не поддерживает операции подключения сокета тогда, этот метод всегда возвращает false.
CancelledKeyException
- Если этот ключ был отмененpublic final boolean isAcceptable()
Вызов этого метода формы k.isAcceptable() ведет себя точно таким же образом как выражение
k.readyOps() & OP_ACCEPT != 0
Если канал этого ключа не поддерживает сокет - принимают операции тогда, этот метод всегда возвращает false.
CancelledKeyException
- Если этот ключ был отмененpublic final Object attach(Object ob)
Присоединенный объект может позже быть получен через attachment
метод. Только один объект может быть присоединен за один раз; вызов этого метода заставляет любое предыдущее присоединение быть отброшенным. Текущее присоединение может быть отброшено, присоединяя null.
ob
- Объект, который будет присоединен; может быть nullpublic final Object attachment()
Для дальнейшей ссылки API и документации разработчика, см.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.