SimpleDateFormat類(lèi)在多線程環(huán)境下存在線程安全問(wèn)題,因?yàn)镾impleDateFormat類(lèi)中的實(shí)例變量calendar是非線程安全的,多個(gè)線程同時(shí)調(diào)用SimpleDateFormat的方法可能會(huì)導(dǎo)致線程安全問(wèn)題。
為了解決SimpleDateFormat線程安全問(wèn)題,可以使用以下兩種方法:
private static final ThreadLocal<SimpleDateFormat> dateFormatThreadLocal = ThreadLocal.withInitial(() -> new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
public String formatDate(Date date) {
SimpleDateFormat dateFormat = dateFormatThreadLocal.get();
return dateFormat.format(date);
}
private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public synchronized String formatDate(Date date) {
return dateFormat.format(date);
}
以上兩種方法都可以有效解決SimpleDateFormat線程安全問(wèn)題,具體使用哪種方法取決于具體的需求和場(chǎng)景。