java线程中断

java中的线程中断,并不是让线程终止,而且通过一个状态为来通知线程是否要中断,该线程中断与否,是让线程自己去判定,而不是外部线程来执行。

interrupt方法,为设置该线程中断位为true,默认为false

isInterrupt方法,判定该线程是否中断,中断true

interrupted方法,判定该线程是否中断,并且将中断状态清除,也就是说连续两次调用的话,第二次一定是false

 

由于java不能强制终止线程(stop方法已经弃用),所以可以通过interrupt方法来建议线程终止(和gc差不多,都是建议,哈哈),主要说下这个方法,这个方法在运行期的线程是没有任何影响的,也就是运行期的线程不会理睬这个状态位,仍然自己运行自己的,只有在该线程阻塞情况下,才会抛出一个InterruptedException来退出线程的,在这里就能看出来,java线程阻塞一般都是通过wait,sleep,join等方法,同样,这些方法都会抛出InterruptedException异常

总结下,interrupt方法只是更改了线程的状态为,并不能直接将线程终止,同样如果该线程正在运行,并不能终止,只有阻塞的线程才会抛出InterruptedException来通过此方式终止线程

 



 上面的例子示意了,在运行期的线程,并不能通过interrupt方法来中断线程的,仅仅是改变了状态位

 



1  示例显示在线程运行状态下,可以通过isInterrupted方法来判定是否进行业务操作,外部线程调用该线程的interrupt中断方法,线程内部通过获取该线程的中断状态位终止业务的进行

2 如果上面开启了线程内部的sleep方法,这个时候类似该进程以及阻塞了,这个时候外部线程调用该线程的interrupt中断方法的话,该线程立马抛出InterruptedException,我们可以通过该异常来终止线程,并在finally中清理一些资源等等

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值