ReentrantLock クラス

定義

再入可能な相互除外 Locksynchronized のメソッドとステートメントを使用してアクセスされる暗黙的なモニター ロックと同じ基本的な動作とセマンティクスを持ちますが、機能が拡張されています。

[Android.Runtime.Register("java/util/concurrent/locks/ReentrantLock", DoNotGenerateAcw=true)]
public class ReentrantLock : Java.Lang.Object, IDisposable, Java.Interop.IJavaPeerable, Java.IO.ISerializable, Java.Util.Concurrent.Locks.ILock
[<Android.Runtime.Register("java/util/concurrent/locks/ReentrantLock", DoNotGenerateAcw=true)>]
type ReentrantLock = class
    inherit Object
    interface ISerializable
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
    interface ILock
継承
ReentrantLock
属性
実装

注釈

再入可能な相互除外 Locksynchronized のメソッドとステートメントを使用してアクセスされる暗黙的なモニター ロックと同じ基本的な動作とセマンティクスを持ちますが、機能が拡張されています。

スレッドによってReentrantLockが<></em>最後に正常にロックされましたが、まだロック解除されていません。 lockを呼び出すスレッドは、ロックが別のスレッドによって所有されていない場合に、ロックを正常に取得して戻ります。 現在のスレッドが既にロックを所有している場合、メソッドはすぐに返されます。 これは、 #isHeldByCurrentThreadメソッドと #getHoldCountを使用して確認できます。

このクラスのコンストラクターは、省略可能な <em>fairness</em> パラメーターを受け取ります。 true設定すると、競合の下で、ロックは待機中の最も長いスレッドへのアクセスを許可することを優先します。 それ以外の場合、このロックは特定のアクセス順序を保証しません。 多くのスレッドからアクセスされるフェア ロックを使用するプログラムでは、既定の設定を使用する場合よりも全体的なスループットが低くなります (つまり、速度が低下する場合があります)。ただし、ロックを取得し、不足を保証する時間の差異は小さくなります。 ただし、ロックの公平性は、スレッド スケジューリングの公平性を保証するものではありません。 したがって、フェア ロックを使用する多くのスレッドの 1 つは、他のアクティブなスレッドが進行せず、現在ロックを保持していない間に、複数回連続して取得される可能性があります。 また、untimed #tryLock() メソッドは公平性の設定を優先しないことにも注意してください。 他のスレッドが待機している場合でも、ロックが使用可能な場合は成功します。

<em>always</em>は、tryブロックを含むlockの呼び出しに直ちに従うことをお勧めします。通常は、次のような構築前/構築後です。

{@code
            class X {
              private final ReentrantLock lock = new ReentrantLock();
              // ...

              public void m() {
                lock.lock();  // block until condition holds
                try {
                  // ... method body
                } finally {
                  lock.unlock();
                }
              }
            }}

このクラスは、 Lock インターフェイスの実装に加えて、ロックの状態を調べるための public メソッドと protected メソッドを多数定義します。 これらのメソッドの一部は、インストルメンテーションと監視にのみ役立ちます。

このクラスのシリアル化は、組み込みロックと同じように動作します。逆シリアル化されたロックは、シリアル化時の状態に関係なく、ロック解除状態になります。

このロックでは、同じスレッドによる最大2147483647再帰ロックがサポートされます。 この制限を超えようとすると、 Error はメソッドのロックからスローされます。

1\.5 で追加されました。

java.util.concurrent.locks.ReentrantLockの Java ドキュメント。

このページの一部は、Androidオープンソースプロジェクトによって作成および共有された作業に基づく変更でありCreative Commons 2.5属性ライセンスに記載されている条件に従って使用されます。

コンストラクター

名前 説明
ReentrantLock()

ReentrantLock のインスタンスを作成します。

ReentrantLock(Boolean)

指定された公平性ポリシーを使用して ReentrantLock のインスタンスを作成します。

ReentrantLock(IntPtr, JniHandleOwnership)

JNI オブジェクトのマネージド表現を作成するときに使用されるコンストラクター。ランタイムによって呼び出されます。

プロパティ

名前 説明
Class

この Objectのランタイム クラスを返します。

(継承元 Object)
Handle

基になる Android インスタンスへのハンドル。

(継承元 Object)
HasQueuedThreads

スレッドがこのロックの取得を待機しているかどうかをクエリします。

HoldCount

現在のスレッドによるこのロックに対する保留の数を照会します。

IsFair

このロックに公平性が true に設定されている場合は、 true を返します。

IsHeldByCurrentThread

このロックが現在のスレッドによって保持されている場合にクエリを実行します。

IsLocked

このロックが任意のスレッドによって保持されている場合にクエリを実行します。

JniIdentityHashCode

再入可能な相互除外 Locksynchronized のメソッドとステートメントを使用してアクセスされる暗黙的なモニター ロックと同じ基本的な動作とセマンティクスを持ちますが、機能が拡張されています。

(継承元 Object)
JniPeerMembers

再入可能な相互除外 Locksynchronized のメソッドとステートメントを使用してアクセスされる暗黙的なモニター ロックと同じ基本的な動作とセマンティクスを持ちますが、機能が拡張されています。

Owner

現在このロックを所有しているスレッドを返します。所有していない場合は null します。

PeerReference

再入可能な相互除外 Locksynchronized のメソッドとステートメントを使用してアクセスされる暗黙的なモニター ロックと同じ基本的な動作とセマンティクスを持ちますが、機能が拡張されています。

(継承元 Object)
QueuedThreads

このロックの取得を待機している可能性があるスレッドを含むコレクションを返します。

QueueLength

このロックの取得を待機しているスレッドの数の推定値を返します。

ThresholdClass

この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。

ThresholdType

この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。

メソッド

名前 説明
Clone()

このオブジェクトのコピーを作成して返します。

(継承元 Object)
Dispose()

再入可能な相互除外 Locksynchronized のメソッドとステートメントを使用してアクセスされる暗黙的なモニター ロックと同じ基本的な動作とセマンティクスを持ちますが、機能が拡張されています。

(継承元 Object)
Dispose(Boolean)

再入可能な相互除外 Locksynchronized のメソッドとステートメントを使用してアクセスされる暗黙的なモニター ロックと同じ基本的な動作とセマンティクスを持ちますが、機能が拡張されています。

(継承元 Object)
Equals(Object)

他のオブジェクトがこのオブジェクトと "等しい" かどうかを示します。

(継承元 Object)
GetHashCode()

オブジェクトのハッシュ コード値を返します。

(継承元 Object)
GetWaitingThreads(ICondition)

このロックに関連付けられている特定の条件で待機している可能性があるスレッドを含むコレクションを返します。

GetWaitQueueLength(ICondition)

このロックに関連付けられている特定の条件を待機しているスレッドの数の推定値を返します。

HasQueuedThread(Thread)

指定されたスレッドがこのロックの取得を待機しているかどうかをクエリします。

HasWaiters(ICondition)

このロックに関連付けられている特定の条件でスレッドが待機しているかどうかをクエリします。

JavaFinalize()

オブジェクトへの参照がなくなったとガベージ コレクションによって判断されたときに、オブジェクトのガベージ コレクターによって呼び出されます。

(継承元 Object)
Lock()

ロックを取得します。

LockInterruptibly()

現在のスレッドが Thread#interrupt interrupted でない限り、ロックを取得します。

NewCondition()

このLock インスタンスで使用するCondition インスタンスを返します。

Notify()

このオブジェクトのモニターで待機している 1 つのスレッドを起動します。

(継承元 Object)
NotifyAll()

このオブジェクトのモニターで待機しているすべてのスレッドを起動します。

(継承元 Object)
SetHandle(IntPtr, JniHandleOwnership)

Handle プロパティを設定します。

(継承元 Object)
ToArray<T>()

再入可能な相互除外 Locksynchronized のメソッドとステートメントを使用してアクセスされる暗黙的なモニター ロックと同じ基本的な動作とセマンティクスを持ちますが、機能が拡張されています。

(継承元 Object)
ToString()

オブジェクトの文字列形式を返します。

(継承元 Object)
TryLock()

呼び出し時に別のスレッドによって保持されていない場合にのみ、ロックを取得します。

TryLock(Int64, TimeUnit)

指定された待機時間内に別のスレッドによって保持されておらず、現在のスレッドが Thread#interrupt が中断されていない場合にロックを取得します。

Unlock()

このロックの解放を試みます。

UnregisterFromRuntime()

再入可能な相互除外 Locksynchronized のメソッドとステートメントを使用してアクセスされる暗黙的なモニター ロックと同じ基本的な動作とセマンティクスを持ちますが、機能が拡張されています。

(継承元 Object)
Wait()

現在のスレッドが起動するまで待機します。通常は、 <em>notified</em> または <em>interrupted</em>。

(継承元 Object)
Wait(Int64, Int32)

現在のスレッドは、通常、 <em>notified</em> または <em>interrupted</em>、または一定のリアルタイムが経過するまで、起動されるまで待機します。

(継承元 Object)
Wait(Int64)

現在のスレッドは、通常、 <em>notified</em> または <em>interrupted</em>、または一定のリアルタイムが経過するまで、起動されるまで待機します。

(継承元 Object)

明示的なインターフェイスの実装

名前 説明
IJavaPeerable.Disposed()

再入可能な相互除外 Locksynchronized のメソッドとステートメントを使用してアクセスされる暗黙的なモニター ロックと同じ基本的な動作とセマンティクスを持ちますが、機能が拡張されています。

(継承元 Object)
IJavaPeerable.DisposeUnlessReferenced()

再入可能な相互除外 Locksynchronized のメソッドとステートメントを使用してアクセスされる暗黙的なモニター ロックと同じ基本的な動作とセマンティクスを持ちますが、機能が拡張されています。

(継承元 Object)
IJavaPeerable.Finalized()

再入可能な相互除外 Locksynchronized のメソッドとステートメントを使用してアクセスされる暗黙的なモニター ロックと同じ基本的な動作とセマンティクスを持ちますが、機能が拡張されています。

(継承元 Object)
IJavaPeerable.JniManagedPeerState

再入可能な相互除外 Locksynchronized のメソッドとステートメントを使用してアクセスされる暗黙的なモニター ロックと同じ基本的な動作とセマンティクスを持ちますが、機能が拡張されています。

(継承元 Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

再入可能な相互除外 Locksynchronized のメソッドとステートメントを使用してアクセスされる暗黙的なモニター ロックと同じ基本的な動作とセマンティクスを持ちますが、機能が拡張されています。

(継承元 Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

再入可能な相互除外 Locksynchronized のメソッドとステートメントを使用してアクセスされる暗黙的なモニター ロックと同じ基本的な動作とセマンティクスを持ちますが、機能が拡張されています。

(継承元 Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

再入可能な相互除外 Locksynchronized のメソッドとステートメントを使用してアクセスされる暗黙的なモニター ロックと同じ基本的な動作とセマンティクスを持ちますが、機能が拡張されています。

(継承元 Object)

拡張メソッド

名前 説明
GetJniTypeName(IJavaPeerable)

インスタンス selfの型の JNI 名を取得します。

JavaAs<TResult>(IJavaPeerable)

selfを強制的にTResult入力し、強制型がJava側で有効であることを確認します。

JavaCast<TResult>(IJavaObject)

Android ランタイムチェック型変換を実行します。

JavaCast<TResult>(IJavaObject)

再入可能な相互除外 Locksynchronized のメソッドとステートメントを使用してアクセスされる暗黙的なモニター ロックと同じ基本的な動作とセマンティクスを持ちますが、機能が拡張されています。

TryJavaCast<TResult>(IJavaPeerable, TResult)

selfを強制的にTResult入力し、強制型がJava側で有効であることを確認します。

適用対象