001 package edu.rice.cs.cunit.threadCheck;
002
003 import java.lang.annotation.*;
004
005 /**
006 * Annotation for a class or method signaling that it should not be run by the designated threads.
007 *
008 * The preferred method is using value and an array of @ThreadDesc annotations. This, however,
009 * can be mixed with the other ways of specifying threads, although they may not support more advanced
010 * features. The thread and thread group names are treated as regular expressions. You may not specify
011 * eventThread=true in a @ThreadDesc annotation used in this class.
012 *
013 * @author Mathias Ricken
014 */
015 @Retention(RetentionPolicy.CLASS)
016 @Target({ElementType.CONSTRUCTOR,ElementType.METHOD,ElementType.TYPE})
017 public @interface NotRunBy {
018 /** @return array of thread descriptions. */
019 ThreadDesc[] value() default {};
020
021 /** @return array of regular expressions for thread names that may not run the annotated class or method. */
022 String[] threadNames() default {};
023
024 /** @return array of thread ID numbers as returned by Thread.getID(), designating the threads
025 * that may not run the annotated class or method. */
026 long[] threadIds() default {};
027
028 /** @return array of regular expressions for thread group names that may not run the annotated class or method. */
029 String[] threadGroups() default {};
030 }