1. 程式人生 > >SimpleDateFormat是執行緒不安全的!!(NumberFormatException: multiple points)

SimpleDateFormat是執行緒不安全的!!(NumberFormatException: multiple points)

問題描述:

有兩個專案,一個ssmp、一個性能資料提供perf-provider ,後者給前者提供rest api;

突然有一天,來了新需求,ssmp在短時間內需要傳送大量的rest請求,請求中有一個

時間引數,傳到後臺做時間格式化時開始報錯:

嚴重: Servlet.service() for servlet [dispatcher] in context with path [/storage-performance-provider] threw exception [Request processing failed; nested exception is java.lang.NumberFormatException: multiple points] with root cause
java.lang.NumberFormatException: multiple points

 

但是除錯發現傳過來的時間沒問題,一時一頭霧水,想看原始碼,覺得太費時間,結果在度娘上搜了下發現有同僚碰到過,說是:

多執行緒方法中使用了共享變數SimpleDateFormat,報如下錯誤:
 Java.lang.NumberFormatException: multiple points
 at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1084
原因:
SimpleDateFormat是執行緒不安全的,切忌切忌!
解決:
線上程方法中,new SimpleDateFormat();
 
例:
       SimpleDateFormat sdf = new SimpleDateFormat();

  而回顧自己的程式碼中確實有一個靜態的SimpleDateFormat例項,至此問題明瞭。