Thread.interrupted()方法的陷阱

package test84;

public class selfInterrupt {

public static void main(String[] args) {
Thread.currentThread().interrupt();
//  下面的判断会打印出来这样的语句 Interrupt:false
//  这样的结果是不是很让人费解呢???
//  
//  分析其原因为:
//  
//  因为在上面的一句代码可以中断线程,所以if判断线程是否中断就会得到的事true
//  但是 Thread.interrupted()这个方法执行完后就会清除线程的中断状态,
//  所以最后再次的打印Thread.interrupted()方法就会得到false结果。
if(Thread.interrupted())
System.out.println("Interrupted:"+ Thread.interrupted());
else
{
System.out.println("Not Interrupted"+Thread.interrupted());
}
//  如果用下面的这个方法来进行if判断就会出现那种情况了,
//  Thread.currentThread().isInterrupted();这个方法得到的结果:Interrupt:true
//  
//  因为它判断完后就不会清除线程的中断状态,只是返回一个线程状态的结果
}
}


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: `Thread.interrupted()` 是一个静态方法,用于检查当前线程是否被中断,并清除中断状态。它有两种用法: 1. 在线程中使用:在线程中调用 `Thread.interrupted()` 方法,可以判断当前线程是否被中断,并清除中断状态。如果当前线程被中断,那么这个方法将返回 true,否则返回 false。 2. 在其他线程中使用:如果一个线程需要中断另一个线程,可以调用另一个线程的 `interrupt()` 方法来中断它。当然,被中断的线程需要检查自己的中断状态,可以使用 `Thread.interrupted()` 方法来判断自己是否被中断。 需要注意的是,如果中断状态已经被清除(即 `Thread.interrupted()` 返回 true),那么下一次调用该方法将返回 false,因为它已经清除了中断状态。 ### 回答2: thread.interrupted() 是一个静态方法,它用于判断当前线程是否被中断,并且会清除中断状态标记。 在多线程编程中,我们可以通过调用线程的 interrupt() 方法来中断线程。当一个线程被中断时,会设置该线程的中断状态标记为 true,这可以通过 isInterrupted() 方法来获取。 而 thread.interrupted() 方法则是用来判断当前线程是否被中断的,它会返回一个布尔值来表示线程的中断状态。在判断完中断状态之后,该方法会将中断状态重新设置为 false,也就是说,如果连续多次调用 thread.interrupted() 方法,每次调用之后都会返回 false,除非在调用过程中线程又被重新中断。 使用 thread.interrupted() 方法时,需要注意以下几点: 1. thread.interrupted() 方法是一个静态方法,它只能判断当前线程是否被中断,而无法判断其他线程的中断状态。 2. 调用 thread.interrupted() 方法会清除当前线程的中断状态,如果后续还需要继续判断中断状态,可以再次调用 isInterrupted() 方法。 3. 在多线程编程中,可以通过捕获 InterruptedException 异常来处理线程被中断的情况,而不一定要使用 thread.interrupted() 方法。 综上所述,thread.interrupted() 方法用于判断当前线程是否被中断,并且会清除中断状态标记。在多线程编程中,可以根据需要选择适合的方法来处理线程中断的情况。 ### 回答3: thread.interrupted() 是 Java 中的一个方法,用于判断当前线程是否被中断,并且会清除中断状态。 当线程调用 interrupt() 方法后,该线程的中断状态会被设置为 true。而调用 thread.interrupted() 方法会检查当前线程的中断状态。 使用 thread.interrupted() 方法有以下几个特点: 1. 检查中断状态:调用 thread.interrupted() 方法可以检查当前线程的中断状态是否被设置为 true。如果中断状态为 true,则说明线程被中断了,可以根据需要进行相应的处理。 2. 清除中断状态:调用 thread.interrupted() 方法会清除当前线程的中断状态,将中断状态重新设置为 false。这样可以保证之后的判断不会再受到之前的中断状态的干扰。 3. 对于其他线程的中断状态不造成影响:thread.interrupted() 方法只会检查当前线程的中断状态,并不会影响其他线程的中断状态。即使其他线程调用了 interrupt() 方法,当前线程调用 thread.interrupted() 方法也只会检查自己的中断状态。 需要注意的是,如果中断状态为 true,表示线程被中断了,但不代表线程一定会停止运行。具体的中断处理逻辑需要开发者根据实际情况进行设计和处理。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值