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

  • 10 Daughters, 2 Sons

    10 Daughters

    10 Mart 2009
  • ipsy Makeup Tips

    ipsy Makeup

    19 ŞUBAT 2009
  • Joanna Okrajni

    Joanna Okraj

    4 EYLÜL 2010