2016-03-03 35 views
6

varsayalım ben java.util.concurrent.locks.Lockbelirleyin

örneğidir kilidi mevcut thread tarafından tutulan olup olmadığını belirlemek için mümkün mü var?

Kilit nesnesinin yalnızca Lock arabirimini uyguladığı ve mutlaka girilmeyeceği varsayılırsa, lock veya tryLock numaralı çağrıların kilitlemeyi kontrol etmenin iyi bir yolu olmayabilir.

cevap

12

Lock arabiriminin kendisi, bu işlevi sağlamamaktadır, ancak ortak uygulayıcısı ReentrantLock'un şu yöntemi vardır: ReentrantLock.isHeldByCurrentThread(). Ancak, belgenin belirttiği gibi, bu yöntemin temel amacının hata ayıklama, onaylama ve sınama olduğunu unutmayın. Eğer normal program mantığına ihtiyacınız varsa, muhtemelen daha iyi bir çözüm var.

+2

Teşekkürler, sadece onaylıyor. Şu anda 'Lock' türü olarak bildirilen üyelerim var ve bazı refactoring yapmak zorunda kalacağım :) – arcyqwerty

+0

Oh ve evet, bunu uygun kilitlemenin yapıldığından emin olmak istediğim program mantığında derinlemesine iddialar için kullanıyorum. İyi uygulamaların tanıtımı için teşekkürler! – arcyqwerty

İlgili konular