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的所有函数都这样做,但您自己的代码可能没有. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |