ArrayList의 add 연산은 잘 확인해보면, 리스트에 값을 추가하는 것 뿐만아니라
크기를 증가시키는 연산도 포함되어있습니다
이때 사이즈를 증가시키는 연산은 원자적이지 않기 때문에,
두 스레드가 동시에 접근했을 때 동시성 문제가 발생할 수 있습니다
자칫 잘못하면 한 스레드가 리스트에 넣은 값이 사라질 수도 있습니다
일반적으로 사용하는 ArrayList, LinkedList, HashSet, HashMap 등과 같이
우리가 일반적으로 자주 사용하는 자료 구조들은 원자적인 연산을 제공하지 않습니다
즉, 스레드 세이프하지 않기 때문에 단일 스레드가 접근하는 경우가 아니고
멀티스레드 환경에서 여러 스레드가 동시에 컬렉션에 접근하는 경우라면 사용해서는 안됩니다