public StringBuffer() {
super(16);
}
AbstractStringBuilder(int capacity) {
value = new char[capacity];
}
char[] value;
public class Holder{
public final StringBuffer sb = new StringBuffer();
}
final
保证我们将看到引用sb
的新值。但是在AbstractStringBuilder(int Capactory)
内写入SB
的内部状态是不同步的。因此,没有happens-before
顺序,这反过来意味着在调用sb.append(2)时发生了从
和在构造函数中写入value
读取;value
是不合理的。
你能帮我理解一下吗?也许我错过了什么...
你能帮我理解一下吗?也许我错过了什么...
AFAIR在JSR-133
之后,可以保证像您的示例中那样初始化的类的final
字段在实例化过程中没有争用条件,并且在init之后只公开正确的值
UPD:通过布莱恩·戈茨