|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: REQUIRED | OPTIONAL | DETAIL: ELEMENT | ||||||||
@Documented @Target(value=TYPE) public @interface NotThreadSafe
The class to which this annotation is applied is not thread-safe. This annotation primarily exists for clarifying the non-thread-safety of a class that might otherwise be assumed to be thread-safe, despite the fact that it is a bad idea to assume a class is thread-safe without good reason.
This annotation is trusted, i.e., it is not verified by analysis. Its use is for documentation.
Implementation note: This annotation is derived from
@NotThreadSafe proposed by Brian Goetz and Tim Peierls in
the book Java Concurrency in Practice (Addison-Wesley 2006) we have
simply adapted it to have semantics as a promise. Further, the annotation in
net.jcip.annotations may be used instead of this one with the same
tool behavior. One difference between the two annotations is that the one in
net.jcip.annotations has retention policy of
RetentionPolicy.RUNTIME while the one in com.surelogic defaults to RetentionPolicy.CLASS.
java.util are not
thread-safe. This could be documented for java.util.ArrayList, for
example, as shown below.
package java.util;
@NotThreadSafe
public class ArrayList extends ... {
...
}
@annotate tag.
/**
* @annotate NotThreadSafe
*/
public class ArrayList extends ... {
...
}
ThreadSafe
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: REQUIRED | OPTIONAL | DETAIL: ELEMENT | ||||||||