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
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, Lock
s 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 Lock
s 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.
Uçucu Kilitli vs vs kilit...
Büyük harf kullanarak Mac OS X Esc Kil...
önleme "kaynak dosya sistemi"...
Mercurial kalmış "kilit" bekl...
Kilit tam olarak nasıl çalışır?...