Параллельные потоки, коллекционеры и безопасность потоковJAVA

Программисты JAVA общаются здесь
Anonymous
Параллельные потоки, коллекционеры и безопасность потоков

Сообщение Anonymous »

См. Простой пример ниже, в котором учитывается количество случаев каждого слова в списке: < /p>

Код: Выделить всё

Stream words = Stream.of("a", "b", "a", "c");
Map wordsCount = words.collect(toMap(s -> s, s -> 1,
(i, j) -> i + j));
В конце концов, wordscount is {a = 2, b = 1, c = 1} .
Но мой поток очень большой, и я хочу параллельно, так что я пишу:

Map wordsCount = words.parallel()
.collect(toMap(s -> s, s -> 1,
(i, j) -> i + j));

Однако я заметил, что wordscount -это простой хэшмап , поэтому мне интересно, нужно ли мне явно попросить одновременную карту, чтобы обеспечить безопасность потока:
Map wordsCount = words.parallel()
.collect(toConcurrentMap(s -> s, s -> 1,
(i, j) -> i + j));

могут ли не совместные коллекционеры безопасно использовать с параллельным потоком или я должен использовать одновременные версии только при сборе из параллельного потока?


Подробнее здесь: https://stackoverflow.com/questions/223 ... ead-safety

Вернуться в «JAVA»