线程 7. 停止线程

文章讲述了在Java中如何停止一个正在等待的线程,通过配合`flag`变量和`interrupt`方法,尤其是在主线程控制下,如何在适当的时候中断等待中的子线程。

停止线程:

  • 停止线程要注意的实现
    1. 我们停止一个线程一般都会配合一个变量去控制。
    2. 如果我们停止的是一个等待状态下的线程,那么需要配合 interrupt 方法去使用。
public class Demo9 extends Thread {

	boolean flag = true;
	public Demo9(String name){
		super(name);
	}

	@Override
	public synchronized void run() {
		int i = 0;
		while(flag){
			try {
				this.wait();  //   狗娃等待...
			} catch (InterruptedException e) {
				System.out.println("接收到了一个InterruptedException..");  //狗娃
			}
			System.out.println(Thread.currentThread().getName()+":"+ i);
			i++;
		}
	}

	public  static void main(String[] args) {
		//创建线程对象
		Demo9 d = new Demo9("狗娃");
		d.start();

		//当主线程的i到80的时候,停止狗娃线程。
		for(int i = 0 ; i<100 ; i++){
			if(i==80){
				// d.flag = false; //interrupt() 无法停止一个线程,
				d.interrupt();  //强制清除一个线程的wait、 sleep状态。  可以指定清除哪个线程。
			}
			System.out.println(Thread.currentThread().getName()+":"+i);
		}
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值