【发布时间】:2017-07-05 08:02:07
【问题描述】:
有很多数据要处理,我试图让它们并行。
class Item{
Integer id;
String data;
}
ExecutorService executor = Executors.newFixedThreadPool(10);
for (Item item : items) {
executor.execute(() -> putItemToDB(item));
}
但是发生的问题是,在一个测试用例中,我有前 6 个任务指向同一个主键。具有相同主键(id)的任务的顺序很重要,不能更改。目前,我无法保证。
例子:
items = [{id: 1, data: "a"}, {id: 1, data: "b"}, {id: 2, data: "g"}]
我必须知道a 是之前 b,并且在线程池中运行所有任务并不能保证这一点。 a 有可能会覆盖 b。
有什么好的设计模式可以解决这个问题吗?
【问题讨论】:
-
不清楚您在问什么,因为这段代码中没有任何内容可以揭示“具有相同主键的任务顺序” 的实际含义。
-
我改进了我的问题。我希望现在没事。
标签: java spring multithreading parallel-processing amazon-dynamodb