多线程Java执行器在上一个完成后执行一个可调用的?
我有一个定制的业务需求。我需要执行一系列服务呼叫。每个调用都会在数据库中创建一条新记录。我只需要在前一个服务调用完成后执行下一个服务调用,因为新的服务调用将使用前一个服务调用在数据库中创建的记录作为输入参数
我决定在未来的任务中包装这些服务调用,然后使用Executors.newSingleThreadExecutor()
在循环中执行这些任务
请建议它是否足够,如果不足够,请提供更好的解决方案
我还需要在执行下一个任务之前放置task.isDone()
# 1 楼答案
考虑到你的要求,这是个不错的选择
是的,差不多。有了标准的JDK库,这可能是你能找到的最好的了
否。该执行者的javadoc明确声明“[…]任务保证按顺序执行,并且在任何给定时间都不会有多个任务处于活动状态。"
因此,在前一个活动任务终止(成功或失败)之前,不会启动任何任务。只要把它们塞进遗嘱执行人,它就会帮你处理事情