首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >搜索方法返回的超时时间,否则将抛出超时消息

搜索方法返回的超时时间,否则将抛出超时消息
EN

Stack Overflow用户
提问于 2012-10-07 15:15:26
回答 1查看 88关注 0票数 0

我想通过java main执行一个search方法,并实现search方法返回的超时时间,否则它将抛出超时消息。如何使用线程或timer类实现此超时功能?

EN

回答 1

Stack Overflow用户

发布于 2012-10-07 17:50:49

一种方法是将搜索任务提交给executor和call get(timeout); on the returned future -本质上是:

  • 使用您的任务创建Callable
  • run it with a timeout
  • 如果它超时,请取消它-要使取消生效,您的Callable需要对中断

做出反应

代码语言:javascript
复制
Callable<SearchResult> task = ...;
ExecutorService executor = Executors.newFixedThreadPool(1);
Future<SearchResult> f = executor.submit(task);

SearchResult result = null;
try {
    result = f.get(2, TimeUnit.SECONDS); //2 seconds timeout
    return result;
} catch (TimeOutException e) {
    //handle the timeout, for example:
    System.out.println("The task took too long");
} finally {
    executor.shutdownNow(); //interrupts the task if it is still running
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12766865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档