Selector.Select Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Перегрузки
Select(IConsumer, Int64) |
Выбирает и выполняет действие на ключах, соответствующие каналы которых готовы к операциям ввода-вывода. |
Select(Int64) |
Выбирает набор ключей, соответствующие каналы которых готовы к операциям ввода-вывода. |
Select() |
Выбирает набор ключей, соответствующие каналы которых готовы к операциям ввода-вывода. |
Select(IConsumer) |
Выбирает и выполняет действие на ключах, соответствующие каналы которых готовы к операциям ввода-вывода. |
Select(IConsumer, Int64)
Выбирает и выполняет действие на ключах, соответствующие каналы которых готовы к операциям ввода-вывода.
[Android.Runtime.Register("select", "(Ljava/util/function/Consumer;J)I", "GetSelect_Ljava_util_function_Consumer_JHandler", ApiSince=33)]
public virtual int Select (Java.Util.Functions.IConsumer? action, long timeout);
[<Android.Runtime.Register("select", "(Ljava/util/function/Consumer;J)I", "GetSelect_Ljava_util_function_Consumer_JHandler", ApiSince=33)>]
abstract member Select : Java.Util.Functions.IConsumer * int64 -> int
override this.Select : Java.Util.Functions.IConsumer * int64 -> int
Параметры
- action
- IConsumer
Действие для выполнения
- timeout
- Int64
Если положительный, блок до timeout
миллисекунда, более или менее, ожидая, когда канал будет готов; если ноль, блок на неопределенный срок; не должен быть отрицательным.
Возвращаемое значение
Количество уникальных ключей, потребляемых, возможно, ноль
- Атрибуты
Комментарии
Выбирает и выполняет действие на ключах, соответствующие каналы которых готовы к операциям ввода-вывода.
Этот метод выполняет операцию блокировки выбора. Он просыпается от запроса операционной системы только в том случае, если выбран хотя бы один канал, вызывается метод селектора #wakeup wakeup
, текущий поток прерывается или истекает определенный период времени ожидания.
Метод указанного действияConsumer#accept(Object) accept
вызывается с ключом для каждого канала, готового к выполнению операции, определяемой интересующим его набором ключей. Метод accept
может вызываться несколько раз для одного ключа, но с набором готовых операций, содержащих подмножество операций, для которых канал готов (как описано выше). Метод accept
вызывается при синхронизации в селекторе и его наборе выбранных ключей. Необходимо обеспечить большую осторожность, чтобы избежать взаимоблокировки с другими потоками, которые также синхронизируются с этими объектами. Операции выбора в целом не являются повторной, и поэтому действие должно иметь большую осторожность, чтобы не пытаться выполнить операцию выбора в одном селекторе. Поведение при попытке повторной операции выбора является конкретной реализацией и поэтому не указано. Если действие закрывает селектор, ClosedSelectorException
возникает при завершении действия. Действие не запрещено закрывать каналы, зарегистрированные в селекторе, и не запрещено отменять ключи или изменять интересующий набор ключей. Если канал выбран, но его ключ отменен или его интересующий набор перед выполнением действия на ключе, то он является реализацией, определенной для того, вызывается ли действие (его можно вызвать с SelectionKey#isValid() invalid
помощью ключа). Исключения, создаваемые действием, передаются вызывающей объекту.
Этот метод не предоставляет гарантии в режиме реального времени: он планирует время ожидания, как если бы, вызывая Object#wait(long)
метод.
Добавлено в 11.
Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.
Применяется к
Select(Int64)
Выбирает набор ключей, соответствующие каналы которых готовы к операциям ввода-вывода.
[Android.Runtime.Register("select", "(J)I", "GetSelect_JHandler")]
public abstract int Select (long timeout);
[<Android.Runtime.Register("select", "(J)I", "GetSelect_JHandler")>]
abstract member Select : int64 -> int
Параметры
- timeout
- Int64
Если положительный, блок до timeout
миллисекунда, более или менее, ожидая, когда канал будет готов; если ноль, блок на неопределенный срок; не должен быть отрицательным.
Возвращаемое значение
Количество ключей, возможно, ноль, чей наборы готовых операций были обновлены
- Атрибуты
Исключения
Значение , если селектор закрыт.
Значение , если заданный аргумент времени ожидания меньше нуля.
Если возникает ошибка ввода-вывода.
Комментарии
Выбирает набор ключей, соответствующие каналы которых готовы к операциям ввода-вывода.
Этот метод выполняет операцию блокировки выбора. Он возвращается только после выбора по крайней мере одного канала, вызывается метод селектора #wakeup wakeup
, текущий поток прерывается или истекает определенный период времени ожидания.
Этот метод не предоставляет гарантии в режиме реального времени: он планирует время ожидания, как если бы, вызывая Object#wait(long)
метод.
Документация по Java для java.nio.channels.Selector.select(long)
.
Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.
Применяется к
Select()
Выбирает набор ключей, соответствующие каналы которых готовы к операциям ввода-вывода.
[Android.Runtime.Register("select", "()I", "GetSelectHandler")]
public abstract int Select ();
[<Android.Runtime.Register("select", "()I", "GetSelectHandler")>]
abstract member Select : unit -> int
Возвращаемое значение
Количество ключей, возможно, ноль, чей наборы готовых операций были обновлены
- Атрибуты
Исключения
Если возникает ошибка ввода-вывода.
Значение , если селектор закрыт.
Комментарии
Выбирает набор ключей, соответствующие каналы которых готовы к операциям ввода-вывода.
Этот метод выполняет операцию блокировки выбора. Он возвращается только после выбора по крайней мере одного канала, вызывается метод селектора #wakeup wakeup
или текущий поток прерван, в зависимости от того, что происходит первым.
Документация по Java для java.nio.channels.Selector.select()
.
Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.
Применяется к
Select(IConsumer)
Выбирает и выполняет действие на ключах, соответствующие каналы которых готовы к операциям ввода-вывода.
[Android.Runtime.Register("select", "(Ljava/util/function/Consumer;)I", "GetSelect_Ljava_util_function_Consumer_Handler", ApiSince=33)]
public virtual int Select (Java.Util.Functions.IConsumer? action);
[<Android.Runtime.Register("select", "(Ljava/util/function/Consumer;)I", "GetSelect_Ljava_util_function_Consumer_Handler", ApiSince=33)>]
abstract member Select : Java.Util.Functions.IConsumer -> int
override this.Select : Java.Util.Functions.IConsumer -> int
Параметры
- action
- IConsumer
Действие для выполнения
Возвращаемое значение
Количество уникальных ключей, потребляемых, возможно, ноль
- Атрибуты
Комментарии
Выбирает и выполняет действие на ключах, соответствующие каналы которых готовы к операциям ввода-вывода.
Этот метод выполняет операцию блокировки выбора. Он просыпается от запроса операционной системы только при выборе по крайней мере одного канала, вызывается метод селектора #wakeup wakeup
или текущий поток прерывается, в зависимости от того, что происходит первым.
Этот метод эквивалентен вызову метода 2-arg #select(Consumer, long) select
с временем ожидания 0
блокировки на неопределенный срок.
Добавлено в 11.
Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.