title: Thread safety of final field
body: <p>Let's say I have a JavaBean <em>User</em> that's updated from another thread like this:</p>
  
  <pre><code>public class A {
  
      private final User user;
  
      public A(User user) {
          this.user = user;
      }
  
      public void aMethod() {
          Thread thread = new Thread(new Runnable() {
  
              @Override
              public void run() {
                  ...a long running task..
                  user.setSomething(something);
              }
  
          });
          t.start();
          t.join();
      }
  
      public void anotherMethod() {
          GUIHandler.showOnGuiSomehow(user);
      }
  }
  </code></pre>
  
  <p>Is this code thread safe? I mean, when the thread that created A instance and called A.aMethod reads user fields, does it see user in the fresh state? How to do it in appropriate thread safe manner?</p>
  
  <p>Note that I can't modify the user class and I don't know if it's thread safe itself.</p>