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

  • Breno Rises

    Breno Rises

    7 Ocak 2014
  • William Sledd

    William Sled

    24 EYLÜL 2006
  • YouChewBu

    YouChewBu

    26 Ocak 2009