中断异常捕获中的方法调用是否会完成 运行() 方法并使线程完成

Will method call in a interrupt exception catch finish the run() method and make the thread finished

我有一个使用以下 run() 方法的线程。

我写这段代码是为了在 2 秒后断定失败,如果在那 2 秒内没有发生中断,则执行 startNewRound()。如果线程在 isLateToTimeout = true 时被中断,它应该调用 startNewRound() 并完成执行,以便线程终止。对于任何其他中断,它应该再次开始等待 2 秒。

我想知道的是在 startNewRound() 调用 catch 块后,这个线程是否会被终止(正如我上面所解释的)。

public void run() {
    try {
        Thread.sleep(2000);
        System.out.println("FAILURE"));
        startNewRound();
    } catch (InterruptedException e) {
        if (isLateToTimeout){
            startNewRound();
        }
        else{
            run();
        }
    }
}

在@BoristheSpider 的输入后,我为 运行 方法想出了这个解决方案。

public void run() {
    int i = 0;
    while(i<=200){
        if (i == 200){
            startNewRound();
            break;
        }
        else{
            try {
                Thread.sleep(10);
            } catch (InterruptedException e) {
                if (isLateToTimeout){
                    startNewRound();
                    break;
                }
                else{
                    i = 0;
                }
            }
        }
        i++;
    }
}

希望这是在两次调用 startNewRound() 后正确终止线程而不导致堆栈溢出的解决方案。