你还是误解了我的意思,我的意思是去重使用take()方法获取已完成的任务的结果,将这个结果去重,不是去重多个任务的结果
时间: 2024-04-21 09:22:52 浏览: 102
非常抱歉之前的误解。如果您想在获取已完成的任务结果时进行去重操作,您可以使用`take()`方法获取已完成的任务,并将结果存储在一个集合中。然后,您可以对这个集合进行去重操作。以下是一个示例代码:
```java
Set<Object> distinctResults = new HashSet<>();
for (int i = 0; i < 36; i++) {
try {
Future<Object> future = completionService.take();
Object result = future.get();
// 进行去重操作
distinctResults.add(result);
} catch (ExecutionException e) {
e.printStackTrace();
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
// 去重后的结果存储在distinctResults集合中
```
在上述示例中,我们使用`completionService.take()`方法获取已完成的任务,并通过`future.get()`方法获取任务的执行结果。然后,我们将结果存储在`distinctResults`集合中。
通过使用`Set`来存储已经获取的结果,利用其去重的特性,您可以确保`distinctResults`集合中的数据不会包含重复的结果。
请根据您的实际需求和数据类型,进行相应的修改和适配。
阅读全文