gpt4 book ai didi

java - 在加入其他线程时被打断

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:37:39 26 4
gpt4 key购买 nike

我应该如何在加入其他线程时处理 InterruptedException,假设我实际上没有预料到会被打断,并且没有明智的做法?吞下异常?

try
{
t.join();
u.join();
}
catch (InterruptedException e)
{
// should not happen
}

或者我应该将每个 join 放在其单独的 try/catch 中,这样如果 InterruptedExeption 确实 发生了在加入 t 时,至少 u 有机会被加入?

try
{
t.join();
}
catch (InterruptedException e)
{
// should not happen
}
try
{
u.join();
}
catch (InterruptedException e)
{
// should not happen
}

或者我应该防御性地吞下一个循环中的异常,这样我最终会加入两个线程,即使一些恶意的人试图打断我?

while (true)
{
try
{
t.join();
break;
}
catch (InterruptedException e)
{
// no way, Jose!
}
}
while (true)
{
try
{
u.join();
break;
}
catch (InterruptedException e)
{
// no way, Jose!
}
}

附带说明一下,有没有 InterruptedExeption 不会让我的代码看起来难看的情况? :)

最佳答案

如果某些事情不应该发生,您可能想知道它是否曾经确实发生过 - 让它显而易见的最好方法通常是抛出一个 RuntimeException一些描述(例如 IllegalStateException)。如果你没有预料到被打断的可能性,这表明系统处于你不太乐意支持的状态,所以我不会尝试继续前进——快速中止通常是最好的选择。

您可能想编写一个辅助方法来为您执行此操作,以使调用代码更清晰。

关于java - 在加入其他线程时被打断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6265656/

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