Selector.Select 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
多載
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中新增。
此頁面的部分是根據 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中新增。
此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。