ReadWriteLock
ile korunan alanlara açıklama eklemek için uygun/tercih edilen bir yol nedir, böylece FindBugs gibi araçlar ek açıklamalardan yararlanabilir? ReadWriteLock
'un adı, @GuardedBy
ek açıklamasında yazılmalıdır. @GuardedBy
ek açıklamasında sadece okuma kilidini veya sadece yazma kilidini yazmak için bir neden var mı? FindBugs veya başka araçlar, 'da ReadWriteLock
'u bile destekliyor mu?@GuardedBy ek açıklaması ile java.util.concurrent.locks.ReadWriteLock
cevap
, @GuardedBy
isn't fully implemented by Findbugs ve sadece için çoğunlukla şu şekildedir: bu GuardedBy ek açıklama
net.jcip.annotations.GuardedBy
net.jcip.annotations.Immutable
net.jcip.annotations.NotThreadSafe
net.jcip.annotations.ThreadSafe
Kullanımı olmalıdır dokümantasyon. (Bu kısmen uygulanan içindir.)
hep @GuardedBy("readwritelock")
ya da synchronize
kullanmak nesne kullanın. ikinci Örneğin
:
class Example {
private Object lock = new Object();
@GuardedBy("lock")
private Stuff innards = ...;
public void work() {
synchronized(lock) {
workWith(innards.goop());
}
}
}
Bul böcek aşağıdaki ek açıklamaları destekler: Bu yazının yazıldığı zamanda
@ThreadSafe
public class Queue<E> implements java.util.Queue<E>
{
private ConcurrentLinkedQueue readWriteLock;
@GuardedBy(value="readWriteLock")
public boolean offer(E o)
{
return queue.offer(o);
}
}
Bu ek açıklamalar da JSR305 yakalanır. Bu referans uygulamasında görülebilirler: http://code.google.com/p/jsr-305/source/browse/trunk/ri/src/main/java/javax/annotation/concurrent/ –
Bu şekilde daha kompakt bir şekilde yazılabilir: @GuardedBy ("readWriteLock") - "value =" kısmı açık bir şekilde gerekli değildir. –
Sorum şu temel kullanımla ilgili değil. Ben bir read lock ve bir yazma kilidi içeren bir java.util.concurrent.locks.ReadWriteLock, tüm ReadWriteLock olarak bir @GuardedBy ek açıklamada, veya bireysel okuma ve yazma olarak atıfta bulunup bulunmayacağını anlamaya çalışıyorum kilitler. Ve bunlardan herhangi birinin etkili olup olmadığı. –
- 1. Üst_yazılar ile ggplot2 ek açıklaması
- 2. @code java ek açıklaması,
- 3. ek açıklaması görünmez mi?
- 4. @CrossOrigin ek açıklaması, IntelliJ
- 5. JPA: yabancı anahtar ek açıklaması
- 6. Can @ grubu ek açıklaması phpunit
- 7. Ek ürün açıklaması tab magento
- 8. @GuardedBy, @ThreadSafe, @ NotThreadSafe
- 9. XJC ve özelleştirilmiş ciltleme ile XMLElementWrapper ek açıklaması nasıl oluşturulur?
- 10. MKMapView'te Harita ek açıklaması nasıl eklenir?
- 11. java - Spring @Value ek açıklaması döndürür
- 12. Kotlin'de Jackson JsonSubTypes ek açıklaması nasıl kullanılır?
- 13. ekleme açık tip repl itibaren ek açıklaması
- 14. CDI @ Produces ek açıklaması için Spring eşdeğeri hangisidir?
- 15. Scala - ImplicitNotFound ek açıklaması yöntem düzeyinde uygulanabilir mi?
- 16. İlkbahar 3'te @CrossOrigin ek açıklaması nasıl yapılır?
- 17. NoMethodError, Ruby ile Karşılaştırma Açıklaması
- 18. Yönetilen Bean'in tamamı @ManagedProperty ek açıklaması aracılığıyla nasıl enjekte edilir?
- 19. @Index ek açıklaması JPA 2.1'de nasıl çalışır?
- 20. Bağlantılı yapılandırmaların Spring @Configuration ek açıklaması ile başlatıldığından nasıl emin olabilirim?
- 21. POCO'nun Açıklaması
- 22. Scala istisnası, tip ek açıklama ile anlaşılırken
- 23. Sütun Google grafik açıklaması konum açıklaması
- 24. JAXB Belgeleri Açıklaması
- 25. Api annotasının açıklaması, kullanımdan kaldırılmıştır
- 26. Dosyaya bir metin açıklaması ile yükleme
- 27. Func'in açıklaması
- 28. AWS İstemcisi ile Symfony 3, AnnotationException ("@http" açıklaması) atar
- 29. IplImage * img'in açıklaması
- 30. IMEI kodu/01 açıklaması
Teşekkürler! Sadece hızlı bir not, FindBugs sanatının durumunu bilmiyorum (bu yüzden bu soruyu sordum! :), ancak ek açıklamaların uygulanamayacağından bahsetmiş olan bağlantı dört yaşında görünüyor. –
Bu proje son derece aktiftir ve bağlantılı hata izleyicisindeki etkinliğe göre değerlendirilir. –
FindBugs projesini mi kastediyorsunuz? Tabii ki, hayatta ve iyi. Dört yıl önce GuardedBy ek açıklamasının uygulanamayacağı belli bir ifadeyi kastettim. En yeni FindBugs kodunun bunu uygulayabileceğini söylüyorum. Bir şeyi yanlış anladığım/yanlış anladığım için özür dilerim. –