java.lang.NumberFormatException: multiple points at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1890) at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110) at java.lang.Double.parseDouble(Double.java:538) at java.text.DigitList.getDouble(DigitList.java:169) at java.text.DecimalFormat.parse(DecimalFormat.java:2056) at java.text.SimpleDateFormat.subParse(SimpleDateFormat.java:1869) at java.text.SimpleDateFormat.parse(SimpleDateFormat.java:1514) at java.text.DateFormat.parse(DateFormat.java:364) at com.github.sejoung.codetest.simpledateformat.SimpleDateFormatThreadUnsafetyExample.parseDate(SimpleDateFormatThreadUnsafetyExample.java:45) at com.github.sejoung.codetest.simpledateformat.SimpleDateFormatThreadUnsafetyExample.lambda$main$0(SimpleDateFormatThreadUnsafetyExample.java:35) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748)
음 위에 코드에서는 parse 부분에서는 에러가 나는데 format 부분은 문제가 없었다.
그래서 java doc를 찾아 보았다 그랬더니 Synchronization 부분이 존재하는데 내용은 아래처럼 나와 있다.
쓰레드마다 객체를 생성하거나 여러 쓰레드가 동시에 접근하는 경우는 외부에 synchronized 를 하는것이라고 나와있다.
그럼 코드에 synchronized 를 걸거나 아에 내부적으로 new하는 코드를 하는것이 좋다.