Как создать потокобезопасную или неизменяемую коллекцию в fastutils?

Fastutil, кажется, самый быстрый вариант для коллекций в Java.

Вот эти javadocs: http://fastutil.di.unimi.it/docs/it/unimi/dsi/fastutil/longs/Long2ObjectMaps.SynchronizedMap.html

но мне трудно найти пример использования.

Как я могу иметь синхронизированную (поточно-ориентированную?) Карту? Неизменная карта?

2 ответа

Каждый тип карты имеет свой собственный класс синхронизированной оболочки (например, Long2ObjectMaps.SynchronizedMap как вы связали выше). Чтобы использовать его, создайте конкретную реализацию карты, затем используйте соответствующую …Maps.synchronize() Способ получения синхронизированной версии:

Long2ObjectMap<Foo> unsynched = new Long2ObjectOpenHashMap<>();

// this is actually a Long2ObjectMaps.SynchronizedMap
Long2ObjectMap<Foo> synched = Long2ObjectMaps.synchronize(unsynchronized);

Существует облегченная поточно-ориентированная альтернатива: FastUtil Concurrent Wrapper .

По сравнению с подходом синхронизации fastutil по умолчанию через synchronized(mutex)Обертка использует striped ReadWriteLocks(с разными режимами), которые в некоторых случаях имеют лучшую производительность.

Другие вопросы по тегам