Поделиться через


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.

Документация по Java для java.nio.channels.Selector.select(java.util.function.Consumer<java.nio.channels.SelectionKey>, long).

Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом 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.

Документация по Java для java.nio.channels.Selector.select(java.util.function.Consumer<java.nio.channels.SelectionKey>).

Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.

Применяется к