我有自定义业务要求。我需要执行一系列服务调用。这些调用中的每一个都在数据库中创建一条新记录。我需要在上一次服务调用完成后才执行下一个服务调用,因为新服务调用将使用先前服务调用在DB中创建的记录作为输入参数。
我决定将每个服务调用包装在Future Tasks中,然后使用Executors.newSingleThreadExecutor()
在循环中执行这些任务。
如果不这样做,请建议是否足够和更好的解决方案?
在执行下一个任务之前,我还需要放置task.isDone()
吗?
答案 0 :(得分:2)
我决定使用Executors.newSingleThreadExecutor()。
根据您的要求做出很好的选择。
如果不这样做,请建议是否足够和更好的解决方案?
是的,差不多。使用标准的JDK库,这可能是您能找到的最佳库。
我还需要在执行下一个任务之前放置task.isDone()吗?
没有。此执行程序的javadoc明确指出" [...]任务保证按顺序执行,并且在任何给定时间不会有多个任务处于活动状态。"
因此,在先前活动的终止(成功与否)之前不会启动任务。只需将它们填入执行程序,它就会为您处理事情。