将在中断异常捕获中的方法调用完成run()方法并使线程完成

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

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

我想知道的是,在catch块中startNewRound()调用之后,该线程是否将终止(如我上面所述)。

public void run() {
    try {
        Thread.sleep(2000);
        System.out.println("FAILURE"));
        startNewRound();
    } catch (InterruptedException e) {
        if (isLateToTimeout){
            startNewRound();
        }
        else{
            run();
        }
    }
}
charlie7911 回答:将在中断异常捕获中的方法调用完成run()方法并使线程完成

在@BoristheSpider输入之后,我想到了run方法的解决方案。

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()调用之后正确终止线程而不会引起stackOverflow的解决方案。

本文链接:https://www.f2er.com/3119951.html

大家都在问