共用方式為


Semaphore.TryAcquire 方法

定義

多載

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

適用於