SimpleDateFormat 是 Java 中一个非常常用的类用来对日期字符串进行解析和格式化输出,但如果使用不小心会导致非常微妙和难以调试的问题,因为 DateFormat 和 SimpleDateFormat 类不都是线程安全的,在多线程环境下调用 format() 和 parse() 方法应该使用同步代码来避免问题。
下面是你在使用 SimpleDateFormat 应该要小心的几点:
- 确保不会在多线程状态下使用同一个 DateFormat 或者 SimpleDateFormat 实例
- 如果多线程情况下需要访问同一个实例,那么请用同步方法
- 可以使用 JODA 日期时间处理库来避免这些问题
- 你也可以使用 commons-lang 包中的 FastDateFormat 工具类
- 另外你也可以使用 ThreadLocal 来处理这个问题