Semaphore.TryAcquire 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
多載
TryAcquire() |
只有在調用時有一個允許,才從這個旗號取得許可證。 |
TryAcquire(Int32) |
從這個旗號取得指定數目的許可,只有在所有允許在叫用時才能取得。 |
TryAcquire(Int64, TimeUnit) |
從這個旗號取得許可證,如果在指定的等候時間內可供使用,且目前的線程尚未中斷 Thread#interrupt。 |
TryAcquire(Int32, Int64, TimeUnit) |
從這個旗號取得指定數目的許可,如果所有允許在指定的等候時間內可用,而且目前的線程尚未中斷 Thread#interrupt。 |
TryAcquire()
只有在調用時有一個允許,才從這個旗號取得許可證。
[Android.Runtime.Register("tryAcquire", "()Z", "GetTryAcquireHandler")]
public virtual bool TryAcquire ();
[<Android.Runtime.Register("tryAcquire", "()Z", "GetTryAcquireHandler")>]
abstract member TryAcquire : unit -> bool
override this.TryAcquire : unit -> bool
傳回
true
如果已取得許可證, false
則為 ,否則為
- 屬性
備註
只有在調用時有一個允許,才從這個旗號取得許可證。
取得許可證,如果有,並立即傳回 ,其值為 true
,將可用許可證的數目減少一個。
如果沒有可用的允許,則這個方法會立即傳回 值 false
。
即使這個旗號已設定為使用公平排序原則,tryAcquire()
<呼叫 em>will/em> 會<立即取得允許,如果有的話,無論其他線程目前是否正在等候。 這個和商號;barging”行為在某些情況下可能很有用,即使它打破公平性也一樣。 如果您想要接受公平性設定,請使用 #tryAcquire(long, TimeUnit) tryAcquire(0, TimeUnit.SECONDS)
幾乎相等的設定(它也會偵測到中斷)。
的 java.util.concurrent.Semaphore.tryAcquire()
Java 檔。
此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。
適用於
TryAcquire(Int32)
從這個旗號取得指定數目的許可,只有在所有允許在叫用時才能取得。
[Android.Runtime.Register("tryAcquire", "(I)Z", "GetTryAcquire_IHandler")]
public virtual bool TryAcquire (int permits);
[<Android.Runtime.Register("tryAcquire", "(I)Z", "GetTryAcquire_IHandler")>]
abstract member TryAcquire : int -> bool
override this.TryAcquire : int -> bool
參數
- permits
- Int32
要取得的許可證數目
傳回
true
如果已取得許可證, false
則為 ,否則為
- 屬性
例外狀況
如果 permits
為負數
備註
從這個旗號取得指定數目的許可,只有在所有允許在叫用時才能取得。
取得指定數目的許可證,如果有的話,並立即傳回 值 true
,減少指定數量的可用許可證數目。
如果可用的許可證不足,則這個方法會立即傳回 值 false
,且可用許可證的數目不會變更。
即使這個旗號已設定為使用公平排序原則,tryAcquire
<呼叫 em>will/em> 會<立即取得允許,如果有的話,無論其他線程目前是否正在等候。 這個和商號;barging”行為在某些情況下可能很有用,即使它打破公平性也一樣。 如果您想要接受公平性設定,請使用 #tryAcquire(int, long, TimeUnit) tryAcquire(permits, 0, TimeUnit.SECONDS)
幾乎相等的設定(它也會偵測到中斷)。
的 java.util.concurrent.Semaphore.tryAcquire(int)
Java 檔。
此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。
適用於
TryAcquire(Int64, TimeUnit)
從這個旗號取得許可證,如果在指定的等候時間內可供使用,且目前的線程尚未中斷 Thread#interrupt。
[Android.Runtime.Register("tryAcquire", "(JLjava/util/concurrent/TimeUnit;)Z", "GetTryAcquire_JLjava_util_concurrent_TimeUnit_Handler")]
public virtual bool TryAcquire (long timeout, Java.Util.Concurrent.TimeUnit? unit);
[<Android.Runtime.Register("tryAcquire", "(JLjava/util/concurrent/TimeUnit;)Z", "GetTryAcquire_JLjava_util_concurrent_TimeUnit_Handler")>]
abstract member TryAcquire : int64 * Java.Util.Concurrent.TimeUnit -> bool
override this.TryAcquire : int64 * Java.Util.Concurrent.TimeUnit -> bool
參數
- timeout
- Int64
等候允許的時間上限
- unit
- TimeUnit
自變數的時間單位timeout
傳回
true
如果已取得許可證,以及 false
取得許可證之前經過的等候時間,則為
- 屬性
例外狀況
如果目前線程中斷,則為
備註
從這個旗號取得許可證,如果在指定的等候時間內可供使用,且目前的線程尚未中斷 Thread#interrupt。
取得許可證,如果有,並立即傳回 ,其值為 true
,將可用許可證的數目減少一個。
如果沒有可用的許可證,則目前的線程會因為線程排程目的而停用,並處於休眠狀態,直到發生三件事之一: <ul><li>其他線程 #release
會叫用這個旗號的方法,而目前線程旁邊會指派許可證;或 <li>其他線程 Thread#interrupt 會中斷目前的線程;或 <li>指定的等候時間經過。 </ul>
如果取得許可證,則會傳回值 true
。
如果目前線程:<ul><li>在進入此方法時已設定其中斷狀態;或 <li>是 Thread#interrupt 在等候取得許可證時中斷,則會InterruptedException
擲回 /ul>,<並清除目前線程的中斷狀態。
如果指定的等候時間經過,則會傳回值 false
。 如果時間小於或等於零,則方法完全不會等候。
的 java.util.concurrent.Semaphore.tryAcquire(long, java.util.concurrent.TimeUnit)
Java 檔。
此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。
適用於
TryAcquire(Int32, Int64, TimeUnit)
從這個旗號取得指定數目的許可,如果所有允許在指定的等候時間內可用,而且目前的線程尚未中斷 Thread#interrupt。
[Android.Runtime.Register("tryAcquire", "(IJLjava/util/concurrent/TimeUnit;)Z", "GetTryAcquire_IJLjava_util_concurrent_TimeUnit_Handler")]
public virtual bool TryAcquire (int permits, long timeout, Java.Util.Concurrent.TimeUnit? unit);
[<Android.Runtime.Register("tryAcquire", "(IJLjava/util/concurrent/TimeUnit;)Z", "GetTryAcquire_IJLjava_util_concurrent_TimeUnit_Handler")>]
abstract member TryAcquire : int * int64 * Java.Util.Concurrent.TimeUnit -> bool
override this.TryAcquire : int * int64 * Java.Util.Concurrent.TimeUnit -> bool
參數
- permits
- Int32
要取得的許可證數目
- timeout
- Int64
等候允許的時間上限
- unit
- TimeUnit
自變數的時間單位timeout
傳回
true
如果已取得所有許可證,以及 false
取得所有許可證之前經過的等候時間,則為
- 屬性
例外狀況
如果目前線程中斷,則為
如果 permits
為負數
備註
從這個旗號取得指定數目的許可,如果所有允許在指定的等候時間內可用,而且目前的線程尚未中斷 Thread#interrupt。
取得指定數目的許可證,如果可用,並立即傳回 ,其值為 true
,則減少指定數量的可用許可證數目。
如果可用的許可證不足,則目前線程會因為線程排程目的而停用,並處於休眠狀態,直到發生三件事之一:<ul><li>其他線程會叫用此旗號的其中一個#release() release
方法,而目前線程旁邊是指派的許可證,且可用的允許數目符合此要求;或者 <li 其他線程 Thread#interrupt 會中斷目前的線程;或 <li>>指定的等候時間經過。 </ul>
如果取得允許,則會傳回值 true
。
如果目前線程:<ul><li>在進入此方法時已設定其中斷狀態;或者 <li>是 Thread#interrupt 在等候取得許可證時中斷,則會InterruptedException
擲回 /ul>,<並清除目前線程的中斷狀態。 任何要指派給此線程的許可證,都會改為指派給嘗試取得許可證的其他線程,就像呼叫 #release()
已提供許可證一樣。
如果指定的等候時間經過,則會傳回值 false
。 如果時間小於或等於零,則方法完全不會等候。 任何要指派給此線程的許可證,都會改為指派給嘗試取得許可證的其他線程,就像呼叫 #release()
已提供許可證一樣。
的 java.util.concurrent.Semaphore.tryAcquire(int, long, java.util.concurrent.TimeUnit)
Java 檔。
此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。