public final class DefaultLockRegistry extends ObjectSE implements LockRegistry
LockRegistry
のデフォルト実装。このクラスのインスタンスが作成されると、Lock
SE オブジェクトの配列が作成されます。配列の長さは、コンストラクターで渡される 'mask' パラメーターに基づきます。デフォルトのマスクは 0xFF で、256 個の ReentrantLock
SE インスタンスで構成される配列が作成されます。lockKey (例: Object) で obtain(Object)
メソッドが呼び出されると、オブジェクトの hashCode (例: object.hashCode & mask
) をマスクすることによって Lock
SE のインデックスが決定され、Lock
SE が返されます。コンストラクターと説明 |
---|
DefaultLockRegistry() 256 個のロックを備えたデフォルトのマスク 0xFF を使用して DefaultLockRegistry を構築します。 |
DefaultLockRegistry(int mask) 指定されたマスクを使用して DefaultLockRegistry を構築します。マスクの値は Math.pow(2、n)-1 である必要があります。ここで、n は 1 〜 31 で、Math.pow(2、n)ロックのハッシュを作成します。 |
修飾子と型 | メソッドと説明 |
---|---|
LockSE | obtain(ObjectSE lockKey) lockKey の hashCode() をマスクでマスクし、その結果をロックテーブルのインデックスとして使用してロックを取得します。 |
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
public DefaultLockRegistry()
public DefaultLockRegistry(int mask)
例:
mask
- ビットマスク。public LockSE obtain(ObjectSE lockKey)
LockRegistry
の obtain
lockKey
- ロックインデックスの導出に使用されるオブジェクト。