2016-04-04 13 views
0

Ich habe eine statische Variable, die viel abgerufen wird. Ich möchte die Initialisierung synchronisieren, möchte aber, dass sie lazy geladen wird. Also nicht endgültig.nur die Zuweisung einer statischen Variablen synchronisieren

Ist dies ein korrekter/akzeptabler Ansatz?

Hier ist der Code.

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

Code-Formatierung –

Antwort

0

Sie auf etwas synchronisieren anderes, das static, billig und nicht faul ist:

public class Test { 

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

    ... 

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

     ... 
Verwandte Themen