Mega Code Archive

 
Categories / Java / Threads
 

Inner self run threads

public class InnerSelfRunMain extends Object {   private Thread internalThread;   private volatile boolean noStopRequested;   public InnerSelfRunMain() {     // add your code here ...     System.out.println("initializing...");     noStopRequested = true;     Runnable r = new Runnable() {       public void run() {         try {           runWork();         } catch (Exception x) {           // in case ANY exception slips through           x.printStackTrace();         }       }     };     internalThread = new Thread(r);     internalThread.start();   }   private void runWork() {     while (noStopRequested) {       System.out.println("in runWork() - still going...");       try {         Thread.sleep(700);       } catch (InterruptedException x) {         Thread.currentThread().interrupt(); // re-assert interrupt       }     }   }   public void stopRequest() {     noStopRequested = false;     internalThread.interrupt();   }   public boolean isAlive() {     return internalThread.isAlive();   }   public static void main(String[] args) {     InnerSelfRunMain sr = new InnerSelfRunMain();     try {       Thread.sleep(3000);     } catch (InterruptedException x) {     }     sr.stopRequest();   } }