当前位置: 首页 > 知识库问答 >
问题:

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

沈德寿
2023-03-14

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

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

我想知道的是,在catch块中调用startnewrund()之后,这个线程是否会终止(如上所述)。

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

共有1个答案

韩季
2023-03-14

在@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++;
    }
}

希望这是在两次调用start Newound()后正确终止线程而不会导致stackOverflow的解决方案。

 类似资料:
  • 目前,我使用的是firebase实时数据库。因此,我的数据更改来自另一个线程。因此,我无法控制何时更新新的数据。然后我如何知道何时调用以刷新UI? 谢谢

  • 问题内容: 关于程序流,这一直困扰着我一段时间。 我想知道是否有可能从Method中捕获错误,以阻止它执行通常无法跟着它执行的Method,就像下面我无法工作的示例所示。 我通常会有一个静态int变量,该变量会在程序运行时初始化为0,然后,如果某个方法捕获到异常,它将使int递增,并且每个方法仅在int为0时才运行。 这行得通,但我只是想知道是否可以用异常处理替换int shindig。 问题答案

  • 问题内容: 关于程序流,这一直困扰着我一段时间。 我想知道是否有可能从Method中捕获错误,以阻止它执行通常无法跟着它执行的Method,就像下面我无法工作的示例所示。 我通常会有一个静态int变量,该变量会在程序运行时初始化为0,然后,如果某个方法捕获到异常,它将使int递增,并且每个方法仅在int为0时才运行。 这行得通,但我只是想知道是否可以用异常处理替换int shindig。 问题答案

  • TestController使用一个TestService,它有一个Spring@async asyncComp.getGood(s)方法。当输入字符串不是“good”时,会引发异常。TestController将获得异常,在其余响应中,状态500内部服务器错误。我找不到我项目的确切代码,但找到了一些关于使用CompletableFuture的想法。在答案区域,我发布了我写的作为测试应用程序的内容

  • 本文向大家介绍jQuery 判断图片是否加载完成方法汇总,包括了jQuery 判断图片是否加载完成方法汇总的使用技巧和注意事项,需要的朋友参考一下 对于图片的处理,例如幻灯片播放、缩放等,都是依赖于在所有图片完成之后再进行操作。 今天来看下如何判断所有的图片加载完成,而在加载完成之前可以使用 loading 的 gif 图表示正在加载中。 一、普通方法 监听 img 的 load 方法,每 loa

  • 我已经使用C#(库项目)和Aspect(AOP)编写了Azure函数v1用于日志记录。我在catch块中没有得到异常。 捕获异步方法引发的异常 我有上面讨论的相同问题,但Azure函数运行方法是异步任务,其异常处理和异步void相同。不确定哪里有问题?假设这是函数SDK问题。 Azure函数 记录器方面 解决方法:当我从Azure函数中删除异步等待并通过“getWaiter().GetResult