加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 如何检查函数执行是否超过指定的秒数?

发布时间:2020-12-15 04:56:48 所属栏目:Java 来源:网络整理
导读:如果需要超过3秒,我想超时执行一个函数. long startTime = System.currentTimeMillis();getStaticJsonResponse("build","post");long finishTime = System.currentTimeMillis();long elapsedTime = finishTime - startTime / 1000;System.out.println("time"
如果需要超过3秒,我想超时执行一个函数.

long startTime = System.currentTimeMillis();
getStaticJsonResponse("build","post");
long finishTime = System.currentTimeMillis();
long elapsedTime = finishTime - startTime / 1000;
System.out.println("time" + elapsedTime);

解决方法

您需要有一个单独的线程,等待方法终止或超时.幸运的是,伟大的 Guava库的创建者已经实现了这一点:只需使用 TimeLimiter(在您的情况下,SimpleTimeLimiter).

您的代码如下所示:

TimeLimiter limiter = new SimpleTimeLimiter();
String result = limiter.callWithTimeout(new Callable<String>() {
    public String call() {
      return getStaticJsonResponse("build","post");
    }
  },3,TimeUnit.SECONDS,false);

(假设您的方法返回一个String,否则调整返回类型).

请注意,与其他解决方案一样,这可以保证呼叫者最多等待3个时间段.但它确实不能保证方法执行在3秒后实际中止.只有当被调用的代码对Thread.interrupt()所做的线程中断做出反应时,它才会被中止.等待I / O的所有函数都这样做,但您自己的代码可能没有.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读