com.surelogic
Annotation Type NotThreadSafe


@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.

Examples:

Most of the collection implementations provided in 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 ... {
   ...
 }
 

Javadoc usage notes:

This annotation may placed in Javadoc, which can be useful for Java 1.4 code which does not include language support for annotations, via the @annotate tag.
 /**
  * @annotate NotThreadSafe
  */
 public class ArrayList extends ... {
   ...
 }
 

See Also:
ThreadSafe



Copyright © 2010 Surelogic, Inc.. All Rights Reserved.