2017-09-24 86 views
1

我'尝试使用chronicleMap.parallelStream:ChronicleMap和parallelStream

myChronicleMap.entrySet().parallelStream().forEach((entry) -> { 
    process(entry); //heavy process 
} 

我得到了以下异常。

java.lang.IllegalStateException:ChronicleMap ...迭代器应该只从单个线程

不知道如何使用chronicleMap和parallelStream访问? 谢谢

+0

首先,这不是一个平行流。 –

回答

1

如果编年史不支持并行流,那么你将不得不将其内容复制到一个映射实现中。

Map<?, ?> mapCopy = myChronicleMap.entrySet() 
            .stream() 
            .collect(Collectors.toMap(Entry::getKey, Entry::getValue)); 
mapCopy.entrySet().parallelStream().forEach(this::process); 
+1

我使用编年史地图,因为我需要高性能的堆外地图。 https://github.com/OpenHFT/Chronicle-Map – kem

+2

那么,你有三种选择。第一个选项是复制到支持并行流的地图类型。第二种选择是完全忽略并行流,并回退到标准执行程序服务。第三个选择是贡献OpenHFT以支持并行流。 –

相关问题