2016-04-04 5 views
0

私は静的変数を持っています。私は、初期化を同期したいが、それが遅延読み込みされているようにしたい。それで最終的には成立しない。静的変数の代入のみを同期する

これは正しいか、許容可能なアプローチですか?

ここにコードがあります。

public class Test { 

    private static Object staticObj; 

    public static Object getStaticObj() throws Exception{ 
     if(staticObj == null){ 
      assignNewStaticObj(); 
     } 
     return staticObj; 
    } 

    private static void assignNewStaticObj(){ 
     synchronized(staticObj){ 
      if (staticObj == null) { 
       staticObj = new Object(); 
      } 
     } 
    } 

} 
+0

コードの書式 –

答えて

0
あなたは、 static安くて怠惰ではない何か他のものに同期させることができ

public class Test { 

    ... 
    private static Object staticObjSync = new Object(); 

    ... 

    private static void assignNewStaticObj() { 
     synchronized(staticObjSync) { 

     ... 
関連する問題