아메리카노가 그렇게 맛있답니다 여러분

최근 크롤링을 위해 멀티 쓰레드 환경에서 SImpleDateFormat을 사용하다가 오류가 뜨는 것을 보았다.

나에게 발생한 문제는 NumberFormat이었던가? 여튼 포맷이 틀려서 발생하는 문제였는데 다른 사람의 문제를 찾아보니 ArrayIndexOutOfBound 등 다양한 문제를 야기시켰다.


만약 다중 쓰레드를 쓰는데 SimpleDateFormat 부분에서 오류가 났다면 한 번쯤 내가 SimpleDateFormat을 static으로 써서 그런 것은 아닌지 생각해야 할 것 같다. 의외로 쓰레드 문제 때문에 발생하는 예외의 종류가 획일적이지 않고 다양하다.


남들은 FastDateFormat인가? 하는 라이브러리로 해결할 수 있다고 하는데 이 문제는 점유 문제였기 때문에 clone() 메서드를 써서 static으로 만들어뒀던 SimpleDateFormat을 필요한 곳에 얕은 복사해서 쓰는 방법으로 해결했다. (그냥 쓰레드마다 new SimpleDateFormat()해줬단 뜻)