1.ArrayList不是線程安全的,若是想要實現同步,可使用:Collections.synchronizedList(List)將其包裹起來。 java
關於非安全的ArrayList與安全的實現能夠參見:http://www.oschina.net/code/snippet_70229_2425 安全
2.SimpleDateFormat也不是線程安全的,在多線程環境下,會出現問題,解決方法是使用ThreadLocal。即便將SimpleDateFormat設置爲static,也不可避免,由於這根本是徒勞的。--官方推薦爲每一個線程建立一個實例,但顯然這種方式比較浪費;但若是使用同步鎖機制,又會帶來性能問題。因此推薦使用ThreadLocal方式解決:一個線程裏的變量是不存在多線程的。 多線程
使用ThreadLocal解決:(也可使用JODA日期時間處理庫 /commons-lang 包中的 FastDateFormat 工具類來避免這些問題) 工具
private static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss"; public static ThreadLocal local = new ThreadLocal<>(); protected synchronized Object initiaValue(){ return new SimpleDateFormat(DATE_FORMAT); } public static DateFormat getDateFormat(){ return (DateFormat)local.get(); } public static java.util.Date pase(String textDate) throws ParseException{ return getDateFormat().parse(textDate); }參考自:http://lilongfei1030.blog.163.com/blog/static/860152820136260822266/