JAVA-多线程-停止线程

多线程编程中,想要要正在运行的线程停止,主要有两种方式:

  • 1使用stop方法强行终止线程,但是不推荐此方法,因为stop方法和suspend及resume一样,都是过期作废的,使用它们很有可能会有不可预料的结果。
  • 2 在多线程的run方法中,通过加入标志位判断配合着 interrupt 标志方法,进行线程的业务逻辑上的停止。

第一种方式不说了,强烈不建议使用stop方法,因为如果强制停止线程可能使一些清理性的工作得不到完成,并且在对于有 锁 对象的进行处理的时候,强制停止会出现不一致情况。

在介绍第二种方式之前,先介绍一下多线程中的两个方法 this.interrupted(); 以及 this.isInterrupted(); 他们都是测试当前线程已经中断的状态,但是还是有区别的。

this.interrupted(): 测试当前线程是否已经中断状态,执行后可以将状态标识清除false,意思就是说,如果你使用thread.interrupt() ; 方法将当前的线程状态标识打上了“是否停止它,true”,那么调用一次this.interrupted(): 后标识就会被改为“是否停止它,false”,那么第二次次继续this.interrupted(): 的时候,状态就会变为了false。

this.isInterrupted();测试当前线程是否已经中断状态,执行后不清除标识状态,停止线程,主要使用该方法进行判断,代码如下

代码1—- 通过main方法中的对线程使用interrupt方法,打上标志位,在run逻辑代码中进行判断,然后直接退出循环,或者返回结果,进行停止线程。

这里写图片描述
这里写图片描述
这里写图片描述

代码2—- 抛异常后,try中下部分代码不执行了,达到停止线程的目的,然后执行catch方法。
这里写图片描述
这里写图片描述

建议使用 抛异常的方法来实现线程停止,因为可以在catche块中一层一层向上抛,达到层层传播的目的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值