Java Executor在上一个完成后执行一个Callable?

时间:2014-12-16 07:09:17

标签: java multithreading concurrency futuretask executors

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

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

如果不这样做,请建议是否足够和更好的解决方案?

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

1 个答案:

答案 0 :(得分:2)

  

我决定使用Executors.newSingleThreadExecutor()。

根据您的要求做出很好的选择。

  

如果不这样做,请建议是否足够和更好的解决方案?

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

  

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

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

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