SORU
17 Kasım 2010, ÇARŞAMBA


Senkronizasyon vs Kilit

2* *Apı kritik kaynağa erişmek için bir sınıf temelde sırayla kontrol sıralar hangi Lock) olarak adlandırılan sağlar. park() unpark() gibi bir yöntem verir.

Eğer synchronized anahtar kelime kullanın ve wait() notify() notifyAll() yöntemleri kullanarak eğer benzer şeyler yapabiliriz.

Bu uygulamada hangisi daha iyi ve neden merak ediyorum?

CEVAP
17 Kasım 2010, ÇARŞAMBA


Eğer sadece bir nesne kilitleme iseniz, synchronized kullanmayı tercih ediyorum

Örnek:

Lock.acquire();
doSomethingNifty(); // Throws a NPE!
Lock.release(); // Oh noes, we never release the lock!

Açıkça try{} finally{} bunu her yerde var.

Senkronize ise, süper net ve yanlış almak imkansız:

synchronized(myObject) {
    doSomethingNifty();
}

Bu, Locks ve bu kadar temiz bir şekilde elde serbest olduğu değil, daha karmaşık şeyler için daha faydalı olabilir " dedi. İsterdim açıkçası tercih kullanmaktan kaçının çıplak Locks ilk başta, sadece git ve bir daha karmaşık bir eşzamanlılık kontrolü gibi bir CyclicBarrier LinkedBlockingQueue, eğer onlar karşılamak ihtiyaçlarınızı.

Asla wait() notify() kullanmak için bir sebep yoktu. ama bazı iyi olanlar olabilir.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • EmmightySofia

    EmmightySofi

    25 EYLÜL 2011
  • SoundHound

    SoundHound

    8 Mart 2006
  • ThreadBanger

    ThreadBanger

    2 Mart 2007