この静的内部クラス実装の単一例は、遅いロードでスレッドが安全ですか?
1378 ワード
public class JiveProperties {
private static final String LOAD_PROPERTIES = "SELECT name, propValue FROM ofProperty";
private JiveProperties() {
System.out.println("JiveProperties constructor");
}
static {
System.out.println("static block");
}
private static class JivePropertyHolder {
static {
System.out.println("initing1");
}
private static final String LOAD_PROPERTIES = "Inner Static Class...";
private JivePropertyHolder() {
System.out.println("inner class...");
}
private static final JiveProperties instance = new JiveProperties();
static {
System.out.println("initing2");
}
}
public static JiveProperties getInstance() {
return JivePropertyHolder.instance;
}
public static void main(String[] args) {
System.out.println(JiveProperties.JivePropertyHolder.LOAD_PROPERTIES);
}
}
結果:
static block Inner Static Class...
従って、初歩的な判断は、遅いロードであり、スレッドが安全である(finalによって保証される)