他のスレッドからアクセスされるオブジェクトのArrayListを持つAndroidで外部ライブラリを使用しています。私の問題は、他のスレッドでnull例外を発生させないように、このAarrayListからいくつかのオブジェクトを移動したいということです。ArrayListスレッドセーフでオブジェクトを移動する最善の方法は何ですか?
私はArrayList ABCDEFGHを持っています.Fを実際の位置から最初の位置に移動したいので、ArrayListはFABCDEGHになります。他のすべてのオブジェクトが右にシフトされているので、私はそれにスワップを使用することはできません。
素朴な実装は次のとおりです。
list.remove(F);
list.add(0,F);
しかし、他のスレッドで、この実装の原因はnull例外他のスレッドが手書きカウントループでリストをループしているので、その競合状態のため糸ループ私は外部ライブラリにアクセスすることができないので、ArrayListトレッドを安全にすることはできません。
競技条件なしで(Arraylistの任意の位置から任意の位置へ)この動きをするより良い方法はありますか? ArrayListのサイズは変更されないことに注意してください。
あなたはループと削除/追加を行うコードを所有していますか?または、ループはライブラリコードで実行されますか? – sudocode
ループはライブラリコード – Akira