Java同步註解(Annotation)解釋

JDK 5.0 以後增加了註解。就是@後面加一個名稱。有其自身的含意。跟C#裏的Attributes似的。
Java併發編程中,用到了一些專門爲併發編程準備的 Annotation。
主要包括三類:
1、類 Annotation(註解)
就像名字一樣,這些註解是針對類的。主有要以下三個:
@Immutable
@ThreadSafe
@NotThreadSafe
@ThreadSafe 是表示這個類是線程安全的。具體是否真安全,那要看實現者怎麼實現的了,反正打上這個標籤只是表示一下。不線程安全的類打上這個註解也沒事兒。
@Immutable 表示,類是不可變的,包含了 @ThreadSafe 的意思。
@NotThreadSafe 表示這個類不是線程安全的。如果是線程安全的非要打上這個註解,那也不會報錯。

這三個註解,對用戶和維護者是有益的,用戶可以立即看出來這個類是否是線程安全的,維護者則是可以根據這個註解,重點檢查線程安全方面。另外,代碼分析工具可能會利用這個註解。


2、域 Annotation(註解)
域註解是對類裏面成員變量加的註解。
3、方法 Annotation(註解)
方法註解是對類裏面方法加的註解。

域註解和方法註解都是用@GuardedBy( lock )來標識。裏面的Lock是告訴維護者:這個狀態變量,這個方法被哪個鎖保護着。這樣可以強烈的提示類的維護者注意這裏。

@GuardedBy( lock )有以下幾種使用形式:

1、@GuardedBy( "this" ) 受對象內部鎖保護
2、@GuardedBy( "fieldName" ) 受 與fieldName引用相關聯的鎖 保護。
3、@GuardedBy( "ClassName.fieldName" ) 受 一個類的靜態field的鎖 保存。
4、@GuardedBy( "methodName()" ) 鎖對象是 methodName() 方法的返值,受這個鎖保護。
5、@GuardedBy( "ClassName.class" ) 受 ClassName類的直接鎖對象保護。而不是這個類的某個實例的鎖對象。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章