Mega Code Archive

 
Categories / Java / Threads
 

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();   } }