複数のスレッドからアクセスされる ArrayList があります。メインスレッドはリストをクリアするだけで、他のスレッドはそれに追加します。別のスレッドがアイテムを追加している間にリストをクリアしたくありません。スレッドがアイテムを追加している間、リストをロックしたい。
これはスレッドを追加するコードです:
synchronized (items)
{
int length = jsonArray.length();
if ((length > 0)) for (int i = 0; i < length; i++)
{
items.add(new Item(jsonArray.getJSONObject(i)));
}
}
ただし、同期ブロックを使用してクリアすることはありません。クリアにもシンクロブロックは必要?