001package jmri;
002
003import java.lang.annotation.*;
004import javax.annotation.concurrent.NotThreadSafe;
005
006/**
007 * Annotation denoting that a method or constructor must be called on the layout thread.
008 * <p>
009 * A class with one or more methods that must be called on a particular thread is by definition 
010 * {@link NotThreadSafe}, so please include the @NotThreadSafe annotation on the class.
011 * <p>
012 * For more information on JMRI threading conventions, see the 
013 * <a href="http://jmri.org/help/en/html/doc/Technical/Threads.shtml">JMRI Threading docoumentation page</a>.
014 *
015 * @author Bob Jacobsen  Copyright 2018
016 */
017
018@Retention(RetentionPolicy.CLASS)  // For access by SpotBugs et al 
019@Target({ElementType.METHOD, ElementType.CONSTRUCTOR})
020@Documented
021@Inherited
022
023public @interface InvokeOnLayoutThread {}
024