专家 -
在以下情况下我需要一些建议。
我有一个包含任务列表的配置文件。每个任务可以有零个、一个或多个依赖项。我想并行执行这些任务 [现在它们正在按顺序执行]
想法是有一个主程序来读取配置文件并加载所有任务。读取单个任务并将其交给将执行任务并在 Future 中返回结果的执行程序 [callable]。当任务被提交给执行者(线程)时,它将监视其依赖项是否首先完成并执行自己的任务。
这是正确的方法吗?使用 Java 1.5 功能还有其他更好的方法吗?
最佳答案
听起来不错,但要注意线程饥饿死锁
。基本上,不要使用有界线程池。
这里有一个例子可以说明这个问题。
http://www.javaconcurrencyinpractice.com/listings/ThreadDeadlock.java
此外,如果您有池数据库连接,您也可能会遇到问题。 10 个线程可以阻塞,持有所有池连接,等待第 11 个线程无法获取第 11 个池连接,因为不再可用。
关于java - 多 :Threading - Is this the right approach?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2524369/