SORU
18 Mayıs 2009, PAZARTESİ


Statik başlatıcılar Java iş parçacığı güvenli?

Statik kod bloğu var kayıt defterinde bazı denetleyicileri başlatmak için kullanıyorum. Benim sorum bu nedenle, bu statik kod bloğu yalnızca kesinlikle çağrılacak garanti sınıfın ilk yüklendiğinde bir kez alabilir miyim? Bu kod bloğu adı verilecek, Classloader zaman ilk yükler diye tahmin ediyorum garanti edemem anlıyorum. Statik kod bloğu sınıfı senkronize edebilirim farkındayım, ama bence yine de olur aslında.

Basit bir kod örneği olacaktır;

class FooRegistry {

    static {
        //this code must only ever be called once 
        addController(new FooControllerImpl());
    }

    private static void addController(IFooController controller) { 
        // ...
    }
}

ya ben bunu yapmak gerekir;

class FooRegistry {

    static {
        synchronized(FooRegistry.class) {
            addController(new FooControllerImpl());
        }
    }

    private static void addController(IFooController controller) {
        // ...
    }
}

CEVAP
18 Mayıs 2009, PAZARTESİ


Evet, Java statik başlatıcılar iş parçacığı güvenli (ilk seçeneği kullanın).

Eğer kodu yürütülür emin olmak istiyorsanız ancak, tam olarak bir kez sınıf, sınıf yükleyicisi bir tek tarafından yüklenir sadece emin olmak gerekir. Statik başlatma sınıf yükleyicisi bir kez gerçekleştirilir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • guau . .

    guau . .

    25 Ocak 2008
  • TheDailyTechDose

    TheDailyTech

    15 EKİM 2012
  • xdadevelopers

    xdadeveloper

    25 Aralık 2009