当前位置: 首页 > 面试题库 >

Java中的超时方法

伍昱
2023-03-14
问题内容

在Java类中,我有一个方法,有时需要很长时间才能执行。也许它挂在该方法流程中。我想要的是,如果该方法在特定时间内未完成,则程序应退出该方法,并继续进行其余的流程。

请让我知道有什么方法可以处理这种情况。


问题答案:

您必须使用线程才能实现此目的。线程是无害的:)下面的示例将一段代码运行10秒钟,然后结束它。

public class Test {
    public static void main(String args[])
        throws InterruptedException {

        Thread thread = new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("0");
                method();
            }
        });
        thread.start();
        long endTimeMillis = System.currentTimeMillis() + 10000;
        while (thread.isAlive()) {
            if (System.currentTimeMillis() > endTimeMillis) {
                System.out.println("1");
                break;
            }
            try {
                System.out.println("2");
                Thread.sleep(500);
            }
            catch (InterruptedException t) {}
        }


    }

    static void method() {
        long endTimeMillis = System.currentTimeMillis() + 10000;
        while (true) {
            // method logic
            System.out.println("3");
            if (System.currentTimeMillis() > endTimeMillis) {
                // do some clean-up
                System.out.println("4");
                return;
            }
        }
    }
}


 类似资料:
  • 本文向大家介绍Java中设置session超时(失效)的三种方法,包括了Java中设置session超时(失效)的三种方法的使用技巧和注意事项,需要的朋友参考一下 1.在web容器中设置(此处以tomcat为例) 在tomcat-5.0.28\conf\web.xml中设置,以下是tomcat 5.0中的默认配置: Tomcat默认session超时时间为30分钟,可以根据需要修改,负数或0为不限

  • 如何用clone()方法克隆Java对象 我有一个关于在java中正确实现类的方法的问题。我知道这是不好的做法,但我需要在考试中知道这一点…在上面的讨论中,他们说调用-但我不明白如果超级函数没有实现克隆会发生什么。例如,假设我有一个扩展Y的类X。X实现了Cl的,而Y没有。Y的方法应该抛出一个异常。那么在这种情况下我们该怎么办? 我能找到的所有解释都以某种方式假设所有超类都实现了克隆,或者至少我是这

  • 本文向大家介绍Java实现任务超时处理方法,包括了Java实现任务超时处理方法的使用技巧和注意事项,需要的朋友参考一下 任务超时处理是比较常见的需求,比如在进行一些比较耗时的操作(如网络请求)或者在占用一些比较宝贵的资源(如数据库连接)时,我们通常需要给这些操作设置一个超时时间,当执行时长超过设置的阈值的时候,就终止操作并回收资源。Java中对超时任务的处理有两种方式:一种是基于异步任务结果的超时

  • 问题内容: 我试图找出网络上的特定主机是否可以访问。我的java代码如下: 这工作得很好,但是如果我将超时降低为500ms,它将不再指定可访问的主机。我计划在一个循环中检查很多主机,因此低超时非常重要。如果我从Windows命令行手动ping主机,则所需时间少于10ms。 那么,为什么Java方法需要更高的超时才能成功?有使用的替代方法吗? 问题答案: 这取决于您所指的可达性。如果仅找到在特定端口

  • 我对Java/Android中的继承/接口有点困惑,不确定我是否走上了正确的道路。基本上,我在Android系统中使用Parcelable,由于方法未定义,所以会出现错误。 我有一个动物超类和几个子类(狗、猫等)。在第一个活动中,您选择一只动物,然后它将其打包并传递给第二个活动: 问题是“updateImage”只存在于子类中,因此它不会在这里编译。我不希望这个方法出现在超类中,因为输出根据动物的

  • 假设我有一些异步计算,比如: 如果异步供应商根据某个指定的超时超时,有没有一种很好的方法为foo提供默认值?理想情况下,这样的功能也会尝试取消运行缓慢的供应商。例如,是否存在与以下假设代码类似的标准库功能: 编辑:这里有一个受Java8启发的解决方案:在lambda表达式中强制检查异常处理。为什么是强制的,而不是可选的?,但不幸的是它阻塞了一个线程。如果我们依赖于createFoo()异步检查超时