2017-02-22 101 views
0

我有创建一个大小为N的BitSets数组的代码。在执行开始时,我会进行一些计算,然后将相应数组indexe中的位设置为过滤过程。例如,如果我得到数字10和位置100,我检查索引10是否将位置100设置为true。Java BitSet get()方法是只读的吗?

后来在执行中,我使用多个线程来调用数组中特定索引的get(bitNum)。有多个线程访问数组中的相同索引的可能性,但BitSet不会以任何方式进行修改。这些操作是否安全?

我查看了BitSet的文档,它声明:在没有外部同步的情况下,BitSet对于多线程应用并不安全。但是,在某些SO线程上,它表明它们对于只读操作是线程安全的。 get()被认为是只读操作吗?

谢谢!

回答

0

如果您可以确保在写入数组期间没有其他线程正在读取数据,那么它是安全的。

同时阅读不应该是我认为的问题。