Из комментариев видно, что ваш ArrayList<Collectable>
доступен из метода onDraw()
в одном потоке с помощью пользовательского интерфейса, одновременно с удалением из него элементов в другом потоке.
Итак, почему бы просто не обернуть оба аксессуара в
synchronized(array_list_name)
{
// UI access code or item removal code
}
Обратите внимание, что это может сделать ваш интерфейс медленным, если удаление элементов занимает много времени. Если это так, рассмотрите возможность составления списка всех индексов элементов, которые нужно удалить, и удалите их в тесном синхронизированном цикле после итерации по всему списку.
Обновление
Мне кажется, весь ваш фрагмент кода можно было бы упростить до:
synchronized(array_list_name)
return array_list_name.remove(id);