如果我将运行功能覆盖为,
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()?如果是,那么中断标志如何设置为true?如果没有,该怎么做? 最佳答案
interrupt()方法执行正常行为,不会中断线程,但会将中断标志设置为true。
线程类具有处理线程中断的规定
public void interrupt()
public static boolean interrupted()
public boolean isInterrupted()
如果打算只执行一次doSomePrcocess,则必须继续执行,它将检查并清除连续调用的线程中断状态。
public static boolean interrupted()
在下面使用将仅检查状态,而不进行修改。
public boolean isInterrupted()