如何使用ThreadLocal避免SimpleDateFormat出现线程不安全
时间: 2023-10-22 21:28:50 浏览: 105
ThreadLocal:如何优雅的解决SimpleDateFormat多线程安全问题
可以将SimpleDateFormat存储在ThreadLocal中,这样每个线程都可以获取到自己独立的SimpleDateFormat实例,避免多个线程同时访问同一个SimpleDateFormat实例,从而避免线程不安全问题。以下是示例代码:
```
public class DateUtil {
private static ThreadLocal<SimpleDateFormat> threadLocal = new ThreadLocal<SimpleDateFormat>() {
@Override
protected SimpleDateFormat initialValue() {
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
}
};
public static Date parse(String dateStr) throws ParseException {
return threadLocal.get().parse(dateStr);
}
public static String format(Date date) {
return threadLocal.get().format(date);
}
}
```
在以上代码中,我们将SimpleDateFormat存储在ThreadLocal中,并且通过get方法获取当前线程的SimpleDateFormat实例,从而保证每个线程都可以独立的使用SimpleDateFormat而不会出现线程不安全问题。
阅读全文