取消线程

有时当一个组件完成或被杀死后,开发者希望由它产生的线程同时也被杀死。例如,在某
定义一个线程:

private volatile Thread myThread;

方法myThread. stop ( )已经弃用,因为它可能会导致应用程序进人不可预知的状态。
相反,必要时可以在父组件的onStop ( )方法中使用如下的方法:

//use to stop the thread myThread
if(myThread!=null){
Thread dummy=myThread;
myThread=null;
dummy .interrupt();
}

在应用程序层面上,还有另外一种方法也可以达到同样的效果,即使用方法setDaemon(true)方法将所有生成的线程声明为守护线程(daemon thread)。这样可以确保如果应用程序的主线程被杀死,那么该应用程序的所有守护线程也都会被同时杀死。

//use when initially starting a threac
myThread.setDaemon(true);
myThread.start();

最后我们总是可以在run()方法中使用while(isrun)循环,并且从循环外部设定isrun = false的方法来杀死线程。但这种方法的缺点就是不能有效的控制线程的停止时间。

原文地址:https://www.cnblogs.com/yuanyuan-5683/p/thread.html