Selector.Select 方法

定义

重载

Select(IConsumer, Int64)

选择并对其相应通道准备好进行 I/O 操作的密钥执行操作。

Select(Int64)

选择一组密钥,其相应的通道已准备好执行 I/O 操作。

Select()

选择一组密钥,其相应的通道已准备好执行 I/O 操作。

Select(IConsumer)

选择并对其相应通道准备好进行 I/O 操作的密钥执行操作。

Select(IConsumer, Int64)

选择并对其相应通道准备好进行 I/O 操作的密钥执行操作。

[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 为毫秒,或多或少,同时等待通道准备就绪;如果为零,则无限期阻止;不得为负

返回

使用的唯一键数,可能为零

属性

注解

选择并对其相应通道准备好进行 I/O 操作的密钥执行操作。

此方法执行阻塞选择操作。 仅当至少选择了一个通道时,才会从查询操作系统中唤醒,调用此选择器 #wakeup wakeup 的方法、当前线程中断或给定的超时期限将过期,以先到者为准。

指定的操作方法是使用每个通道的Consumer#accept(Object) accept密钥调用的,该通道已准备好执行由其密钥的兴趣集标识的操作。 accept对于同一键,可以多次调用该方法,但具有包含通道就绪操作的子集(如上所述)。 在 accept 选择器上同步时调用该方法及其所选键集。 请务必注意避免与其他线程死锁,这些线程也会在这些对象上同步。 选择操作通常不会重新进入,因此操作应非常小心,不要尝试对同一选择器执行选择操作。 尝试重新进入选择操作时的行为是特定于实现的,因此未指定。 如果操作关闭选择器,则在ClosedSelectorException操作完成时会引发。 该操作不得禁止关闭向选择器注册的通道,也禁止取消密钥或更改密钥的兴趣集。 如果选择通道,但在对密钥执行操作之前取消其密钥或其兴趣集已更改,则它是特定于调用操作的实现(可以使用密钥调用SelectionKey#isValid() invalid该操作)。 操作引发的异常将中继到调用方。

此方法不提供实时保证:它通过调用 Object#wait(long) 该方法来计划超时。

已在 11 中添加。

适用于 . 的 java.nio.channels.Selector.select(java.util.function.Consumer<java.nio.channels.SelectionKey>, long)Java 文档

本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。

适用于

Select(Int64)

选择一组密钥,其相应的通道已准备好执行 I/O 操作。

[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 为毫秒,或多或少,同时等待通道准备就绪;如果为零,则无限期阻止;不得为负

返回

已更新其就绪操作集的键数(可能为零)

属性

例外

如果选择器已关闭,则为

如果给定的超时参数小于零,

如果发生 I/O 错误,则为 。

注解

选择一组密钥,其相应的通道已准备好执行 I/O 操作。

此方法执行阻塞选择操作。 它仅在选择至少一个通道后返回,调用此选择器 #wakeup wakeup 的方法、当前线程中断或给定的超时期限将过期(以第一者为准)。

此方法不提供实时保证:它通过调用 Object#wait(long) 该方法来计划超时。

适用于 . 的 java.nio.channels.Selector.select(long)Java 文档

本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。

适用于

Select()

选择一组密钥,其相应的通道已准备好执行 I/O 操作。

[Android.Runtime.Register("select", "()I", "GetSelectHandler")]
public abstract int Select ();
[<Android.Runtime.Register("select", "()I", "GetSelectHandler")>]
abstract member Select : unit -> int

返回

已更新其就绪操作集的键数(可能为零)

属性

例外

如果发生 I/O 错误,则为 。

如果选择器已关闭,则为

注解

选择一组密钥,其相应的通道已准备好执行 I/O 操作。

此方法执行阻塞选择操作。 它仅在选择至少一个通道后返回,此选择器 #wakeup wakeup 的方法被调用,或者当前线程中断,以先来者为准。

适用于 . 的 java.nio.channels.Selector.select()Java 文档

本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。

适用于

Select(IConsumer)

选择并对其相应通道准备好进行 I/O 操作的密钥执行操作。

[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

要执行的操作

返回

使用的唯一键数,可能为零

属性

注解

选择并对其相应通道准备好进行 I/O 操作的密钥执行操作。

此方法执行阻塞选择操作。 仅当至少选择了一个通道、调用此选择器 #wakeup wakeup 的方法或当前线程中断(以第一个为准)时,它才会从查询操作系统中唤醒。

此方法等效于调用 2-arg #select(Consumer, long) select 方法,超时为 0 无限期阻止。

已在 11 中添加。

适用于 . 的 java.nio.channels.Selector.select(java.util.function.Consumer<java.nio.channels.SelectionKey>)Java 文档

本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。

适用于