软件构造课堂延伸(3) java线程中断

java中的interrupt是中断一个线程的意思,不过中断一个线程并不是终止一个线程。

在Core Java中有这样一句话:“没有任何语言方面的需求要求一个被中断的程序应该终止。中断一个线程只是为了引起该线程的注意,被中断线程可以决定如何应对中断 ”。这句话隐晦地说明了在外部直接终止一个线程是不好的事情,可能会导致一些错误。

而所谓的引起注意,只是把线程的中断状态给修改了。(获取线程的中断状态用isinterrupted()方法)

值得注意的是,对于一个处在阻塞状态的线程来说,在将中断标志设置为true后,还会进行下面的操作:如果是wait、sleep以及jion三个方法引起的阻塞,那么会将线程的中断标志重新设置为false,并抛出一个InterruptedException。抛出异常后,便可以根据需要做出相应的处理。

总而言之,调用线程类的interrupt()方法,其本质只是设置该线程的中断标志,将中断标志设置为true,并根据线程状态决定是否抛出异常。因此,通过interrupt()方法实现线程终止的核心思想是:开发人员根据中断标志的具体值,来决定如何以及是否退出线程。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值