0

我有一个自定义业务需求。我需要执行一系列服务调用。这些调用中的每一个都会在数据库中创建一条新记录。我需要在上一个服务调用完成后执行下一个服务调用,因为新的服务调用将使用上一个服务调用在数据库中创建的记录作为输入参数。

我决定将这些服务调用中的每一个包装在 Future Tasks 中,然后用于Executors.newSingleThreadExecutor()循环执行这些任务。

请建议它是否足够,如果它不会有更好的解决方案?

我还需要task.isDone()在执行下一个任务之前放置吗?

4

1 回答 1

2

我决定使用 Executors.newSingleThreadExecutor()。

考虑到您的要求,这是一个不错的选择。

请建议它是否足够,如果它不会有更好的解决方案?

是的,差不多。使用标准 JDK 库,这可能是您能找到的最好的库。

我还需要在执行下一个任务之前放置 task.isDone() 吗?

不。此执行程序的 javadoc 明确指出“[...]任务保证按顺序执行,并且在任何给定时间不会有超过一个任务处于活动状态。”

因此,在先前活动的任务终止(成功与否)之前,不会启动任何任务。只需将它们塞入执行程序,它就会为您处理事情。

于 2014-12-16T07:23:08.037 回答