double check可用于当一个field的创建比较费时,而该field又不一定被使用的情况。
注意这里volatile的使用。
private Object lock = new Object();
private volatile String content;
public String getContent() {
String t = content;
if (t == null) {
synchronized (lock) {
t = content;
if (t == null) {
t = content = "InitString";
}
}
}
return t;
}
注意这里volatile的使用。