一个线程‘优雅‘结束另一个线程

优雅这一说,其实就是在该线程即将结束时,让其做一部分收尾工作,最后再将其结束。
对于多线程情况下,一个线程要结束其他线程

  • 需要保证,结束该线程的时候释放其运行的支援。于是stop()方法就不行,该方法会致使最后线程资源无法释放,可能永远无法释放。

优雅 即是 运用interruted()方法,来实现这一优雅。
那么给大家列个类举个例子

class TwoTerminna {
	private Thread monitor;
     public TwoTerminna() {
    	 
     }
	public void start() {
		monitor = new Thread(() -> {
			while (true) {
				Thread curren = Thread.currentThread();
				if (curren.isInterrupted()) {
					System.out.println("结束工作");
					break;
				}
				try {
					Thread.sleep(1000);
					System.out.println("监控记录");
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
					//111111111111111
					curren.interrupt();
				}

			}

		});
		monitor.start();

	}

	public void stop() {
		monitor.interrupt();
	}

}

public class test3 {
	

	public static void main(String[] args) throws InterruptedException {
		TwoTerminna t1 = new TwoTerminna();
		t1.start();
		Thread.sleep(5000);
		t1.stop();
	}

开始给大家做一些解释:
因为线程是并发的,在结束线程面临。

  • 正常运行时被结束
  • 睡眠时被结束(涉及到interrupted()对应会清空打断状态)

第一种情况:正常处理
第二种情况:注释111111111处理

好啦,多线程的interrupted就到这里。。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值