Selector.Select 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
多載
| 名稱 | Description |
|---|---|
| Select(IConsumer, Int64) |
選擇並執行對應通道已準備好進行輸入輸出操作的金鑰的操作。 |
| Select(Int64) |
選擇一組金鑰,其對應通道已準備好進行 I/O 操作。 |
| Select() |
選擇一組金鑰,其對應通道已準備好進行 I/O 操作。 |
| 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。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
適用於
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 文件 java.nio.channels.Selector.select(long)。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
適用於
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 文件 java.nio.channels.Selector.select()。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
適用於
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) select0 方法,以無限期封鎖。
新增11。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。