package thread;
import java.lang.InterruptedException;
public class Test
{
public static void main(String[] args)
{
UseThread ut = new UseThread();
StopThread st =new StopThread(ut);
ut.start();
st.start();
}
}
class UseThread extends Thread
{
private volatile boolean stop = true;
private int i = 0;
public void stopRun()
{
stop = false;
System.out.println("in stopRun ,i = "+i);
}
public void run()
{
while(stop)
{
System.out.println("in while befor ++ ,i = "+i);
i++;
System.out.println("in while after ++ ,i = "+i);
}
System.out.println("out of while ,i = "+i);
}
}
class StopThread extends Thread
{
private UseThread ut= null;
public StopThread(UseThread u)
{
System.out.println("in the constructor of StopThred ");
ut = u;
}
public void run()
{
System.out.println("in StopThred's run ");
try
{
System.out.println("the StopThread has run but will sleep");
this.sleep(10000);
System.out.println("the StopThred's has waken up ");
}catch(InterruptedException e)
{
e.printStackTrace();
}
ut.stopRun();
System.out.println("in StopThred's run,the UseThread has stopped ");
}
}