2017-02-22 33 views
0

У меня есть код, который создает массив размеров N BitSets. В начале выполнения я делаю некоторые вычисления и затем устанавливаю биты в соответствующем индексе массива, чтобы действовать как процесс фильтрации. Например, если мне дают номер 10 и позицию 100, я проверяю, установлен ли индекс 10 с позицией 100 в true.Является ли метод Java BitSet get() только для чтения?

Позже в выполнении я использую несколько потоков для вызова get (битNum) для определенных индексов в массиве. Существует возможность обращения нескольких потоков к одному и тому же индексу в массиве, однако BitSet не будет каким-либо образом изменен. Являются ли эти операции потоками безопасными?

Я просмотрел документацию для BitSet и заявляет, что: BitSet небезопасен для многопоточного использования без внешней синхронизации. Однако в некоторых SO-потоках это говорит о том, что они являются потокобезопасными для операций только для чтения. Is get() считается операцией только для чтения?

Спасибо!

ответ

0

Если вы можете убедиться, что за время, которое вы пишете в массив, ни один другой поток не читает, он безопасен.

Чтобы читать одновременно, на мой взгляд, не должно быть проблемой.