例如 -
public class Request {
public String id; //is it visible to other threads after construction?
public Request(String id){
this.id= id;
}
}
例如 -
public class Request {
public String id; //is it visible to other threads after construction?
public Request(String id){
this.id= id;
}
}
因为它是您的类不是线程安全的,id
即使在构造函数完成后,线程也可以观察到空值。
为了确保id
在构造后对所有线程可见,您有几种可能性:
final
volatile
Request
对象。安全出版习语包括:
另请参阅这篇文章,它解释了将字段标记为 final 以保证不可变对象的线程安全的重要性。