Dalla documentazione ufficiale:

Note that this implementation is not synchronized. If multiple threads access an ArrayList instance concurrently, and at least one of the threads modifies the list structurally, it must be synchronized externally...bla bla bla
ArrayList non è thread-safe ma ci sono vari modi per renderla tale..cerca su google e troverai molto materiale oppure lavora un po' con la fantasia

ArrayList API



EDIT: mi hanno anticipato