ArrayList.add() is not thread-safe. Even if you're not reading the list from other threads, you shouldn't rely on this logical assumption. Here's the definition of ArrayList.add():
public boolean add(E e) {
ensureCapacity(size + 1);
elementData[size++] = e;
return true;
}
As an example of a problem that could arise without synchronization, the size attribute may be inconsistent after adding all elements. If you later try to get the number of elements, the result may not be correct.