Semaphore.Acquire 方法

定義

多載

名稱 Description
Acquire()

從此信號量取得許可,阻塞直到有許可可用,或執行緒被 Thread#interrupt 中斷。

Acquire(Int32)

從此信號量取得指定數量的許可,阻塞直到所有可用或執行緒被 Thread#interrupt 中斷。

Acquire()

從此信號量取得許可,阻塞直到有許可可用,或執行緒被 Thread#interrupt 中斷。

[Android.Runtime.Register("acquire", "()V", "GetAcquireHandler")]
public virtual void Acquire();
[<Android.Runtime.Register("acquire", "()V", "GetAcquireHandler")>]
abstract member Acquire : unit -> unit
override this.Acquire : unit -> unit
屬性

例外狀況

如果目前執行緒被中斷

備註

從此信號量取得許可,阻塞直到有許可可用,或執行緒被 Thread#interrupt 中斷。

若有許可證,取得並立即返回,減少一張許可證。

若無許可可用,則當前執行緒因執行緒排程而停用,並處於休眠狀態,直到以下兩種情況之一發生:<ul<>li>其他執行緒#release呼叫該信號量的方法,當前執行緒接著被指派許可;或 <li>其他執行緒 Thread#interrupt 中斷當前執行緒。 </ul>

如果目前執行緒<:ul<>li>在進入此方法時已設定中斷狀態;或 <li>在等待許可期間被 Thread#interrupted 中斷,<則InterruptedException會拋出 /ul>,當前執行緒的中斷狀態會被清除。

java.util.concurrent.Semaphore.acquire()Java 檔。

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

適用於

Acquire(Int32)

從此信號量取得指定數量的許可,阻塞直到所有可用或執行緒被 Thread#interrupt 中斷。

[Android.Runtime.Register("acquire", "(I)V", "GetAcquire_IHandler")]
public virtual void Acquire(int permits);
[<Android.Runtime.Register("acquire", "(I)V", "GetAcquire_IHandler")>]
abstract member Acquire : int -> unit
override this.Acquire : int -> unit

參數

permits
Int32

需取得許可證數量

屬性

例外狀況

如果目前執行緒被中斷

若為 permits

備註

從此信號量取得指定數量的許可,阻塞直到所有可用或執行緒被 Thread#interrupt 中斷。

取得指定數量的許可證(若有),並立即返回,減少可用許可證數量。 此方法與迴路 for (int i = 0; i < permits; ++i) acquire(); 相同,但原子層次一次性取得所有許可:

若許可不足,則當前執行緒將被停用以進行執行緒排程,並處於休眠狀態,直到以下兩種情況之一發生:<ul<>li>某執行緒呼叫#release() release該信號量的方法,當前執行緒接著被分配許可,且可用許可數量符合此請求;或 <li>其他執行緒 Thread#interrupt 中斷當前執行緒。 </ul>

如果目前執行緒<:ul<>li>在進入此方法時已設定中斷狀態;或 <li>在等待許可期間被 Thread#interrupted 中斷,<則InterruptedException會拋出 /ul>,當前執行緒的中斷狀態會被清除。 原本應指派給此執行緒的許可,反而會被分配給其他執行緒,試圖取得許可,就像許可是透過呼叫 #release()

java.util.concurrent.Semaphore.acquire(int)Java 檔。

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

適用於