【问题标题】:Timeout a java function when a third party method call hangs第三方方法调用挂起时使 java 函数超时
【发布时间】:2011-08-21 18:37:30
【问题描述】:

我有一个调用第三方方法的 java 应用程序,它可以无限期阻塞而不会引发异常。

是否可以将我的方法调用包装在超时块(或线程或其他构造)中,以便在我假设调用永远不会返回后重新获得控制权?

【问题讨论】:

标签: java multithreading


【解决方案1】:

ThreadPoolExecutor 应该可以满足您的需求。使用awaitTermination 方法:

在关机后阻塞直到所有任务都完成执行 请求,或者发生超时,或者当前线程被中断, 以先发生者为准。

【讨论】:

    【解决方案2】:

    所有这些多线程肯定是一个答案,但想想如果你的应用程序不是多线程的,你可以只存储你发送请求的那一刻的时间戳,并根据当前时间戳检查它。当然,您将需要一个线程来跟踪时间。但总而言之,您可以将同一线程用于您需要的尽可能多的函数调用。所以不要继续在你的类中实现runnable。只需创建一个跟踪线程即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-02
      • 2014-01-14
      相关资源
      最近更新 更多