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

  • Pituvision

    Pituvision

    11 Mart 2006
  • TantalizingTrance

    TantalizingT

    15 ŞUBAT 2009
  • ThePhestor

    ThePhestor

    22 Mart 2011