2017-09-24 91 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以支持並行流。 –

相關問題