我正在尋找一個線程安全的替代品SimpleDateFormat
。 parseObject
舊的FastDateFormat
沒有實現,只是拋出一個錯誤。有任何想法嗎?我不需要任何花哨,只需線程安全和處理這種模式的能力:"yyyy-MM-dd"
。線程安全日期解析器
9
A
回答
12
如果有可能,請使用Joda Time。它的日期/時間解析器是線程安全的,並且它通常是比Date
/Calendar
更好的更多的。
你可以只使用它的解析器,然後將返回值轉換爲Date
,但我個人建議使用整個庫。
1
爲什麼不把的SimpleDateFormat.parseObject()
呼叫到自己的塊?
1
找到了solution。
public class ThreadSafeSimpleDateFormat {
private DateFormat df;
public ThreadSafeSimpleDateFormat(String format) {
this.df = new SimpleDateFormat(format);
}
public synchronized String format(Date date) {
return df.format(date);
}
public synchronized Date parse(String string) throws ParseException {
return df.parse(string);
}
}
8
如this post中所述,您可以同步,使用線程本地或Joda-Time。
例如,使用ThreadLocals:
public class DateFormatTest {
private static final ThreadLocal<DateFormat> df
= new ThreadLocal<DateFormat>(){
@Override
protected DateFormat initialValue() {
return new SimpleDateFormat("yyyyMMdd");
}
};
public Date convert(String source)
throws ParseException{
Date d = df.get().parse(source);
return d;
}
}
+1
+1沒有阻塞。用於線程安全的交易記憶。簡單情況下沒有外部大型圖書館。 – shellholic 2011-01-11 14:42:18
相關問題
- 1. 由FSYacc線程安全生成解析器嗎?
- 2. 單線程安全的SAX解析器實例
- 3. 安全XML解析器
- 4. 棱鏡容器解決線程安全
- 5. 多線程安全日誌
- 6. 瞭解線程安全
- 7. 解析器日期時間
- 8. 駱駝航線,未解析日期
- 9. 在解析安全
- 10. 圍繞lex/yacc解析器的線程安全的C++包裝器
- 11. OpenCSV日期解析
- 12. MagicalRecord日期解析
- 13. F# - 解析日期
- 14. 解析Java日期
- 15. 解析Java日期
- 16. Struts2日期解析
- 17. Python日期解析
- 18. Grails解析日期
- 19. Angular.js日期解析
- 20. 解析日期 - Java
- 21. 解析Javascript日期
- 22. JSON日期解析
- 23. 以下日期格式化代碼線程安全嗎?
- 24. JSF自定義轉換爲日期 - 是線程安全嗎?
- 25. 線程安全
- 26. 線程安全
- 27. 線程安全
- 28. 線程安全
- 29. 線程安全
- 30. 線程安全
這可能無法正常使用,但它很容易。性能取決於有多少線程同時嘗試訪問格式化程序。我會試試這個(或者只是將您的調用包裝到SimpleDateFormat中的同步塊中),以查看它是否真的是一個問題。 – AngerClown 2011-01-11 14:31:17