在Java

时间:2017-06-01 16:31:55

标签: java concurrency timeout thread-priority

我正在开发一个依赖于两个第三方数据源的API - 一个是SOAP API(主要源),另一个是mssql数据库(二级源)。问题是这两个来源不稳定,并且正在影响生态系统中的API和其他API,因为很多线程等待响应很长时间(它的射击JVM内存)。 我希望有一个实现,如果没有响应,会在一定时间后超时主数据源并切换到辅助源并等待响应直到超时到达否则显示一些错误响应。

  

我已经完成了Java并发API。并找到了一个解决方案   使用 ExecutorService#submit(callable)返回一个   未来,它有一个 Future#get(5,TimeUnit.SECONDS)方法,该方法将阻止,直到达到超时。

     
      
  1. 是否建议将此功能用于此类关键资源?
  2.   
  3. 即使有方法执行也没有开始的可能性   超时达到?它是否保证会优先安排它?
  4.   

由于

1 个答案:

答案 0 :(得分:0)

这里确实是 ExecutorService 的正确选择。

ExecutorService#submit(callable) 返回一个 Future 并且它有一个 Future#get(5, TimeUnit.SECONDS)

尝试和测试。工作起来很有魅力。