java 线程方面的几个注解

转自:http://hi.baidu.com/youziguo/item/0d1c7004b1e9f1d4dde5b0ed

gccr

Java同步注解(Annotation)解释。

JDK5.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类的直接锁对象保护。而不是这个类的某个实例的锁对象。

相关推荐