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.
Nasıl kilit bir tablo üzerinde yapılan...
Android Kilit Ekranına Widget...
Global yorumlayıcı bir kilit (GİL) ned...
Ne Gemfile ve Gemfile arasındaki farkt...
VB.NET kilit bir ifade var mı?...