Self run thread : Template « Threads « Java






Self run thread

Self run thread
public class SelfRunThreadTemplate extends Object implements Runnable {
  private Thread internalThread;
  private volatile boolean noStopRequested;

  public SelfRunThreadTemplate() {
    // add your code here ...
    System.out.println("initializing...");

    noStopRequested = true;
    internalThread = new Thread(this);
    internalThread.start();
  }

  public void run() {
    if ( Thread.currentThread() != internalThread ) {
      throw new RuntimeException("only the internal " +
        "thread is allowed to invoke run()");
    }

    while ( noStopRequested ) {
      System.out.println("in run() - still going...");

      try {
        Thread.sleep(700);
      } catch ( InterruptedException x ) {
        Thread.currentThread().interrupt(); 
      }
    }
  }

  public void stopRequest() {
    noStopRequested = false;
    internalThread.interrupt();
  }

  public boolean isAlive() {
    return internalThread.isAlive();
  }
  public static void main(String[] args) {
    SelfRunThreadTemplate sr = new SelfRunThreadTemplate();
    try { Thread.sleep(3000); } catch ( InterruptedException x ) { }
    sr.stopRequest();
  }

}


           
       








Related examples in the same category

1.Inner self run threadsInner self run threads