2017-02-22 11 views
0

サイズNビットセットの配列を作成するコードがあります。実行の開始時に、私はいくつかの計算を行い、対応する配列インデックスのビットをフィルタリングプロセスとして動作させるように設定します。たとえば、10番と100番のポジションが与えられた場合、10番のポジションがtrueに設定されているかどうかをチェックします。Java BitSet get()メソッドは読み取り専用ですか?

後で実行すると、配列内の特定のインデックスでget(bitNum)を呼び出すために複数のスレッドを使用します。配列内の同じインデックスに複数のスレッドがアクセスする可能性がありますが、BitSetは変更されません。これらの操作はスレッドセーフですか?

私はBitSetのドキュメントを見て、次のように述べています。ビットセットは、外部同期なしのマルチスレッドでの使用には安全ではありません。しかし、一部のSOスレッドでは、読み取り専用操作のスレッドセーフであることが示唆されています。 get()は読み取り専用操作と見なされますか?

ありがとうございます!

答えて

0

アレイに書き込んでいる間に他のスレッドが読み込みにアクセスしていないことを確認できれば、安全です。

私の意見では、同時に読むことは問題ではありません。

関連する問題