アルンSR:
上記のJava SEの著書OCP 7からスクリーン印刷です。ページ791。
新しいならば私の質問はReentrantLock
、オブジェクトがメソッド内のすべての時間を作成し、ロックされ、どのように停止する間に、コードブロックを実行しているから、二つのスレッドlock
とunlock
?2つのスレッドが作成されることはありませんReentrantLock
各オブジェクトを、それをロック?私があれば、これはどのように動作するかを想像することができるlock
オブジェクトはインスタンス変数を一度だけインスタンス化され、変更されていませんでした。(できれfinal
)。
私は何かを誤解だろうか?
私はすでに求めていたこのことを、明確な答えが得られませんでした。
アレクサンダー・エッガー:
あなたは右のそのロックにスレッドを同期させるために、毎回の仕事をしない方法自体に「ReentrantLockの」を作成しています。「共有」ロックオブジェクトが存在しなければなりません。
本の中の例では、多分少し単純すぎます。
ドキュメントをReentrantLock
使用する次の例:
class X {
private final ReentrantLock lock = new ReentrantLock();
// ...
public void m() {
lock.lock(); // block until condition holds
try {
// ... method body
} finally {
lock.unlock()
}
}
}