[Java]stop()不能用,如何停止线程?

 
 
/*线程的生命周期===================================================
新的线程-----------> 运行) ---------> 销毁
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
...
线程会自动停止.
*/

 
 
 
发布了15 篇原创文章 · 获赞 1 · 访问量 4133

猜你喜欢

转载自blog.csdn.net/jsqdsq/article/details/78243672