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

  • Amena

    Amena

    15 Kasım 2006
  • bethliebert

    bethliebert

    23 EKİM 2008
  • TheMasterOfHell100

    TheMasterOfH

    13 AĞUSTOS 2011