One thread not stopping other . Even with volatile variable
===

I am test a scenario to use volatile variable to stop one running thread from another.
I wonder why its not working. Where is the problem?
My code is:

    public class StoppableTask extends Thread {
    private  volatile boolean pleaseStop;

     public void run() {
	  System.out.println("Running..");
     while (!pleaseStop) {
     System.out.println("Working...");
    }
    }
    public void tellMeToStop() {
        pleaseStop = true;
      }
    }
    
    public class Stopper extends Thread {
       StoppableTask t ; 

	public Stopper(StoppableTask t){
		this.t=t;
	}
	public void run(){
		System.out.println("Ok..running too..");
		try {
			System.out.println("Waiting..");
			Thread.sleep(5000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		t.tellMeToStop();
		System.out.println("Done Waiting..");
	}



    public class QuickTest{

		public static void main(String[] args) {
		StoppableTask t = new StoppableTask();
		Stopper s = new Stopper(t);
		t.start();
		s.start();
			
	}
 }
