我有一个包含 X 条记录的列表。我想使用多个线程处理这些记录。目前我已经把记录拿出来送去执行。当我打印 threadId 和记录名称时,我可以看到多个线程正在尝试执行同一记录的逻辑,但事实不应该如此。我怎样才能限制这个?
最佳答案
您必须多次将同一条记录传递到池中。没有简单的方法可以意外地执行您的建议,因此很难想象其他任何事情。
顺便说一句,如果您不知道记录是否唯一,可以使用 Steam.distinct()。
List<Result> results = list.stream()
.distinct()
.parallel()
.peek(r -> System.out.println(
Thread.currentThread() + " processes " + r);
.map(r -> processRecord(r))
.collect(Collectors.toList());
流通常是跨多个线程处理集合中记录的更简单方法。
关于java - 使用多线程仅处理记录列表中的 1 条记录一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52200301/