java子线程断点中断不了_Java线程中断

线程中断:

首先线程在未正常结束之前,被强制终止是很危险的事,会造成意想不到的后果。

但有时想让一个线程结束,或者结束某种等待的状态,该咋办?

使用等待/通知机制或者给那个线程一个中断信号,让它自己决定该怎么办?

中断使用的场景:

1.线程为了等待一些特定的资源的到来,调用了Thread.sleep(10000), 让自己10秒后醒过来,但是如果这些特定条件提前到来,来通知处于sleep状态的线程,“嘿老兄,别再睡了”。

2.线程通过调用子线程的join方法阻塞自己等待子线程结束,但是子线程运行过程中发现自己在短时间内没法结束,所以它要通知主线程,别再等待子线程了。

这些情况下,就需要中断。

中断的函数:

Thread.interrupt()方法来做的。

比如A线程调用了这个方法,这个方法就修改了A线程的中断状态。

在非阻塞的线程中

这个方法修改中断状态只是改变了线程中的一个布尔变量的值,在线程体run()方法中调用Thread.CurrendThread().isInterrupt()这个方法,会返回一个true。

在可取消阻塞状态的线程中,比如线程run()方法内调用了Thread.sleep()、Thread.join()、Object.wait()这些方法的线程处于等待的过程中。这个线程调用了interrupt()方法,然后这个线程的Thread.CurrendThread().isInterrupt()的值会改变成true。这个线程收到中断信号后,会抛出InterruptedException异常。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值