线程中断处理

本文介绍了Java线程中断的方法,包括检查中断状态和设置中断状态。线程中断并不强制停止线程,而是设置中断标志。当线程因中断状态抛出InterruptedException时,应注意捕获并处理中断,否则可能导致业务逻辑错误。
摘要由CSDN通过智能技术生成

一、线程中断的方法

线程中断方法主要是两种:
.isInterrupted()是否为中断状态
interrupt()设置为中断

线程中断,并非真正的线程中断,而只是将线程的中断状态标识设置为true,由线程自己根据状态标识进行相应的业务处理逻辑,而线程实际上还在进行。

要区别于InterruptedException异常,一般的,线程会因为BlockingQueue#put、BlockingQueue#take、Object#wait、Thread#sleep以上状态被打断而抛出异常,这个异常是真正的线程中断,而与线程的中断状态标识没有任何关系,标识状态依然为false。

所以,这就需要注意一个问题,千万不能捕获了InterruptedException而不做中断处理,否则业务逻辑依然以为你没有中断,依然走正常的异常逻辑

二、示例代码

@Test
public void testThread() throws InterruptedException {
   
    testThread1();
    testThread2();
}
private void testThread1() throws InterruptedException {
   
    Thread thread1 = new Thread((
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值