通过执行程序服务在可完成的未来中捕获错误的安全方法以及管理执行程序的正确方法

时间:2018-10-12 10:51:54

标签: java scala error-handling executorservice completable-future

我有一个处理负荷巨大的类,为此,我对每种任务类型都使用了阻塞队列。

只要队列中有东西,就递归处理队列,下一个任务将被发送并发送出去进行处理。

作为代码示例,它类似于(请注意我使用Scala

def executeNextTask(taskTypeId: String, task: SomeObjectType) = {
  if(aTaskIsNotInProceesing(taskTypeId)){
    CompletableFuture.supplyAsync(task, executorService)
      .thenAccept(executeNextTask(taskTypeId))
  }
}

问题在于supplyAsync内可能会发生一些错误,并且由于执行者服务,它们被吞下了,我无法捕捉到。有时,该应用程序没有响应,我的猜测很可能是由于执行程序四处徘徊。

值得一提的是,一切都在Java EE生态系统内发生。

我对您的问题是,如何安全地捕获错误以及如何保护代码一致?

0 个答案:

没有答案