gpt4 book ai didi

java - 如何使用java Thread.currentThread().interrupt()

转载 作者:行者123 更新时间:2023-11-29 04:19:35 24 4
gpt4 key购买 nike

如果我将运行函数重写为 ,

Thread t = new Thread(){
public void run(){
try {
if(Thread.currentThread().isInterrupted()) {
doSomePrcocess() // is the isInerrupted() flag seeting to true?
return; //Terminates the current Thread
}
//otherwise
runScript();
} catch (Exception e) {
e.printStackTrace();
}
}
};
t.start();

然后如果我从代码中的任何一点调用 Thread.currentThread().interrupt(),线程是否应该在该处停止并在该点开始运行 doSomeProcess()?如果是,那么中断标志如何设置为真?如果不是,该怎么做?

最佳答案

  • 如果线程处于 hibernate 或等待状态调用线程的interrupt()方法,中断 hibernate 或等待状态

throwing InterruptedException

  • 如果线程不在 hibernate 或等待状态,调用interrupt() 方法执行正常行为,不会中断线程,但会将中断标志设置为 true。

线程类有处理线程中断的规定

public void interrupt()
public static boolean interrupted()
public boolean isInterrupted()

如果您打算只执行一次 doSomePrcocess,那么您必须使用它来检查并清除连续调用的线程中断状态。

public static boolean interrupted()

使用下面只会检查状态,不会修改。

public boolean isInterrupted()

关于java - 如何使用java Thread.currentThread().interrupt(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50207729/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com