/*线程的生命周期===================================================
新的线程-----------> 运行) ---------> 销毁
new Thread() start() stop()或run()执行完成
在运行中,可能会:礼让yield()
下面三个方法不建议使用,定义时使用了Deprecated(不赞成)声明,会产生死锁:
suspend():暂时挂起线程
resume():恢复挂起的线程
stop():停止线程
deprecated 美 ['dɛprə,ketɪd]v. 不赞成;弃用;不宜用(deprecate的过去式及过去分词形式)
那么停止线程该如何去做?
通过设置标志位来做:
*/
class MyThread implements Runnable{
private boolean flag = true ; // 定义标志位
public void run(){
int i = 0 ;
while(this.flag){
System.out.println(Thread.currentThread().getName()
+"运行,i = " + (i++)) ;
}
}
public void stop(){
this.flag = false ; // 修改标志位,标志位一改变,循环会立即停止
}
};
public class StopDemo{
public static void main(String args[]){
MyThread my = new MyThread() ;
Thread t = new Thread(my,"线程") ; // 建立线程对象
t.start() ; // 启动线程
try{
Thread.sleep(30) ;//启动后延迟,为了看清
}catch(Exception e){
}
my.stop() ; // 修改标志位,停止运行
}
};
/*
线程运行,i = 0
线程运行,i = 1
线程运行,i = 2
...
线程会自动停止.
*/