JavaでArrayListを返す共有ライブラリを使用しています。私はそれを反復するので、ConcurrentModificationExceptionがスローされる可能性があり、私は安全であることを100%保証しますか?私は以下のようなことを考えていました。安全でないArrayListを公開するマルチスレッドライブラリ
data_listは、MTライブラリから返されたArrayList <です。
boolean pass = true;
ArrayList<Something> local = new ArrayList<Something>(256);
for (int spin=0; spin<10; ++spin)
{
try {
local.addAll(data_list);
}
catch (java.util.ConcurrentModificationException ce) {
pass = false;
}
finally {
if (pass) break;
pass = true;
}
}
私はローカルで動作するべきか、pass
がtrue
ある変数と仮定すると?
マルチスレッドライブラリは、非同期コレクションをエクスポーズします。私はあなたの最善の策は別のライブラリに切り替えることだと思います。 –
あなたが尋ねた質問に対する答えではありませんが、あるarraylistを別のarraylistにコピーしている場合は、ソースのサイズと同じではなく、 = new ArrayList <>(data_list.size()); 'の代わりに、256を使用するだけです。 – Jules
@Theodorosに同意します。間違った方法でライブラリを使用しようとしていませんか?これはライブラリ自体のデザインが悪いようです。 – cjstehno