どのようにReentrantLockのオブジェクトは、メソッドのローカルスコープの仕事内に作成されますか?

アルンSR:

上記のJava SEの著書OCP 7からスクリーン印刷です。ページ791。

新しいならば私の質問はReentrantLock、オブジェクトがメソッド内のすべての時間を作成し、ロックされ、どのように停止する間に、コードブロックを実行しているから、二つのスレッドlockunlock2つのスレッドが作成されることはありません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()
     }
   }
 }

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=234178&siteId=1