假设我有一个从另一个线程更新的 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 的线程读取用户字段时,它是否看到用户处于新鲜状态?如何以适当的线程安全方式进行操作?
请注意,我无法修改用户类,也不知道它本身是否是线程安全的。