共用方式為


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 屬性授權中所述的詞彙使用。

適用於