問(wèn)題
在多線程中檬嘀,如果采用SimpleDateFormat直接進(jìn)行日期轉(zhuǎn)化需要注意倒彰,有坑疟游,SimpleDateFormat的parser等方法非線程安全呼畸,有兩個(gè)辦法解決,一個(gè)通過(guò)線程本地變量颁虐。
當(dāng)然如果你每次都new一個(gè)SimpleDateFormat對(duì)象沒(méi)問(wèn)題蛮原,不過(guò)這樣比較耗性能。
解決辦法
1.通過(guò)線程的本地變量解決
private static ThreadLocal<DateFormat> threadLocal = new ThreadLocal<DateFormat>();
public static DateFormat IndexDayModeFormat()
{
DateFormat df = threadLocal.get();
if(df==null){
df = new SimpleDateFormat("yyyyMMdd");
threadLocal.set(df);
}
return df;
}
collectionDate = IndexDayModeFormat().parse(dateTime);
2.使用FastDateFormat
dirDateFormat = FastDateFormat.getInstance("yyyyMMdd");
其他用法類似另绩,需要引入的jar
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.5</version>
</dependency>