Эти представления не вернут вам действительно поточно-ориентированные коллекции. Всегда существует вероятность того, что кто-то изменит базовую коллекцию или элементы коллекции.
Чтобы решить эту проблему, вам нужно использовать неизменяемые коллекции и неизменные элементы. Затем в результате возникает потокобезопасность.
Clojure содержит такие неизменные (или постоянные) коллекции .
Проще говоря, добавление или удаление новых элементов возвращает новую коллекцию, которая, как правило, действительно повторно использует большие части старой коллекции посредством умного использования структур данных типа Trie.
Сами по себе они плохо подходят для использования на прямой Java.
Pure4j - это попытка перенести их (и стиль, основанный на неизменяемости / значениях, поддерживаемый Clojure) на язык Java. Это может быть то, что вы ищете.
Отказ от ответственности: я разработчик Pure4J