gpt4 book ai didi

java - 中断异常与 while 循环中的 isInterrupted

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:53:35 32 4
gpt4 key购买 nike

假设我有以下代码:

while(!Thread.currentThread().isInterrupted()){  
//do something
Thread.sleep(5000);
}

现在 Thread.sleep 抛出 `InterruptedException 所以它应该是这样的:

while(!Thread.currentThread().isInterrupted()){  
//do something
try{
Thread.sleep(5000);
} catch(InterruptedException e){

}
}

如果我点击 catchwhile 循环会继续吗?还是我需要执行 Thread.currentThread().interrupt()?如果我调用此方法,是否也会导致 InterruptedException?否则我一开始是怎么得到异常的?

另外如果我有:

while (!Thread.currentThread().isInterrupted()){  
//do something
callMethod();
}

private void callMethod(){
//do something
try {
Thread.sleep(5000);
} catch(InterruptedException e){

}
}

我的 while 循环会再次中断吗?

最佳答案

实际上你的问题更多的是关于 try - catch - finally 而不是关于多线程。

1) 如果sleep抛出一个Exceptioncatch block 将执行,然后while循环继续.

2) 你做的事情和 1) 完全一样

要离开 while 循环,请执行以下操作:

try{  
while(!Thread.currentThread.isInterrupted){
//do something
Thread.sleep(5000);
}
}
catch(InterruptedException e){

}

在这种情况下,如果抛出 Exception,则 while 循环会停止并执行 catch block 。

关于java - 中断异常与 while 循环中的 isInterrupted,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14953409/

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