[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
...
线程会自动停止.
*/



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值