2017-02-22 40 views
0

我有創建一個大小爲N的BitSets數組的代碼。在執行開始時,我會進行一些計算,然後將相應數組indexe中的位設置爲過濾過程。例如,如果我得到數字10和位置100,我檢查索引10是否將位置100設置爲true。Java BitSet get()方法是隻讀的嗎?

後來在執行中,我使用多個線程來調用數組中特定索引的get(bitNum)。有多個線程訪問數組中的相同索引的可能性,但BitSet不會以任何方式進行修改。這些操作是否安全?

我查看了BitSet的文檔,它聲明:在沒有外部同步的情況下,BitSet對於多線程應用並不安全。但是,在某些SO線程上,它表明它們對於只讀操作是線程安全的。 get()被認爲是隻讀操作嗎?

謝謝!

回答

0

如果您可以確保在寫入數組期間沒有其他線程正在讀取數據,那麼它是安全的。

同時閱讀不應該是我認爲的問題。