Java同時プログラミングthis逸脱問題まとめ


this逸脱とは、构造関数が戻る前に他のスレッドがそのオブジェクトの参照を持っています。まだ完全に构造されていないオブジェクトを呼び出す方法が疑われるエラーを引き起こす可能性がありますので、this逸脱の発生を避けるべきです。
thisエスケープはしばしば構造関数でスレッドを起動する時やモニターを登録する時に発生します。

public class ThisEscape { 
  public ThisEscape() { 
    new Thread(new EscapeRunnable()).start(); 
    // ... 
  } 
   
  private class EscapeRunnable implements Runnable { 
    @Override 
    public void run() { 
      //   ThisEscape.this          ,                   ,         this      
    } 
  } 
} 
解決策

public class ThisEscape { 
  private Thread t; 
  public ThisEscape() { 
    t = new Thread(new EscapeRunnable()); 
    // ... 
  } 
   
  public void init() { 
    t.start(); 
  } 
   
  private class EscapeRunnable implements Runnable { 
    @Override 
    public void run() { 
      //   ThisEscape.this          ,                   
    } 
  } 
} 
以上が今回まとめたすべての内容です。応援ありがとうございます。