そして同期と同じ、ReentrantLockのもミューテックス。
同期ReentrantLockの比較:
-
あなたはすなわち、再び自身の内部ロックを取得することができます。オブジェクトのロックを取得するためのスレッドを、オブジェクトのロックを解除しない一方で、ロックを再度取得することができます。
ロックは、スレッドロックカウンタを取得するたびにロックを解除するために、ゼロになりますロックカウンターを知るために、1ずつインクリメントされます。
-
JVMに依存して同期して、APIに依存してReentrantLockの
最適化の同期化された多くは、JVMレベルを最適化され、ユーザーに公開されていません。
ReentrantLockのは、さまざまな機能を実現し、ユーザー自身がAPIを呼び出すことによって、(ロック、アンロック)を達成することができます。
-
ReentrantLockのは、高度な機能が追加されます
-
割り込み待ち
// 调用: lock.lockInterruptibly();
スレッドがロックを待機してみましょう、何か他のものを運ぶのを待ってあきらめました。
-
-
フェアロックを達成することができます
デフォルト不公平な同期化、ReentrantLockのデフォルトのロックは不公平です。
// コンストラクタフェアロック: ロックロック= 新新(ReentrantLockの真の)
-
ロックは、選択通知を達成するために、条件をバインドすることができます
キーワードを同期して(待機)および/のnotifyAll()メソッドは、待機/通知機構と連動して実施されてもよい知らせます。
awaitを呼び出すために結合したロックオブジェクトによってReentrantLockの条件()及びシグナル/ signalAll()メソッドを達成します。
-
ReentrantLockのはのtryLockを達成することができます
スレッドのロックを取得していない、あなたはブロックされません、それは何かを行うことができます。
-
多くの場所で同期最適化されたJVMの様々なロック機構、下のデフォルトCAS楽観的ロックの最適化;
だから、より高いパフォーマンスをReentrantLockのではありません!!