I'm trying to stop a java thread from a different class, but unable to figure out. I have looked into the below links, googled a lot from past 2 days but unable to nail down. May be a simple thing which i need to change but i'm out of options and hence posting it here.
Referred Links
- java external threads (outside the class file it's used)
- http://tutorials.jenkov.com/java-concurrency/creating-and-starting-threads.html
- http://www.java2novice.com/java_thread_examples/
While typing the question, I referred the below links as well..
Stop a thread from outside
Below is my code sample. I'm able to start the WorkerThread from the MainThread and get into the loop. But unable to stop the thread started using the StopThread class.
I've also used the volatile option suggested in the below link.
http://tutorials.jenkov.com/java-concurrency/volatile.html
I feel I'm making a simple mistake, but not able to identify it.
//class WorkerThread
package main;
public class WorkerThread implements Runnable
{
    public WorkerThread() {
        isRunning = true;
    }
    public WorkerThread(boolean False) {
        isRunning = False;
    }
    private volatile boolean isRunning;
    public synchronized void stopThread() {
        isRunning = false;
    }
    public synchronized boolean IsThreadRunning() {
        return isRunning;
    }
    @Override
    public void run() 
    {
        int i = 1;
        while(isRunning)
        {
            System.out.println("Loop " + i);
            i++;
            try { Thread.sleep(2000); } 
            catch (InterruptedException e) { e.printStackTrace(); }
        }
    }
}
//class MainThread
package main;
public class MainThread 
{
    public static Thread t;
    public static void main(String[] args) 
    {
        t = new Thread(new WorkerThread());
        t.start();
    }
}
//class StopThread
package main;
public class StopThread 
{
    public static void main(String[] args) 
    {
        //What should i write here to stop the thread started by MainThread
        MainThread.t.interrupt();
    }
}
 
     
     
     
     
    