次のような別のスレッドから更新された JavaBeanユーザーがあるとします。
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);
}
}
このコードはスレッドセーフですか? つまり、A インスタンスを作成して A.aMethod を呼び出したスレッドがユーザー フィールドを読み取るとき、ユーザーが新しい状態で表示されるのでしょうか? 適切なスレッドセーフな方法でそれを行うには?
ユーザークラスを変更することはできず、それ自体がスレッドセーフかどうかもわかりません。