美文网首页
第 83 条:慎用延迟初始化

第 83 条:慎用延迟初始化

作者: 综合楼 | 来源:发表于2021-08-21 14:47 被阅读0次
慎用延迟初始化.jpeg
最简单同步访问方法
// Lazy initialization of instance field - synchronized accessor
private FieldType field;
private synchronized FieldType getField() {
    if (field == null)
        field = computeFieldValue();
    return field;
}
lazy initialization holder class 用法
// Lazy initialization holder class idiom for static fields
private static class FieldHolder {
    static final FieldType field = computeFieldValue();
}
private static FieldType getField() { return FieldHolder.field; }
双重检查模式(double-check idiom)
// Double-check idiom for lazy initialization of instance fields
private volatile FieldType field;
private FieldType getField() {
    FieldType result = field;
    if (result == null) { // First check (no locking)
        synchronized(this) {
            if (field == null) // Second check (with locking)
                field = result = computeFieldValue();
        }
    }
    return result;
}
最单重检查模式(single-check idiom)
// Single-check idiom - can cause repeated initialization!
private volatile FieldType field;
private FieldType getField() {
    FieldType result = field;
    if (result == null)
        field = result = computeFieldValue();
    return result;
}

相关文章

网友评论

      本文标题:第 83 条:慎用延迟初始化

      本文链接:https://www.haomeiwen.com/subject/zvylsltx.html