怎么实现java的字符串转时间,并且保证线程安全
时间: 2023-06-18 17:02:50 浏览: 54
在Java中,可以使用SimpleDateFormat类将字符串转换为时间。在多线程环境下,我们可以使用ThreadLocal来保证线程安全。
ThreadLocal是一个线程内部的存储类,可以存储任何对象,每个线程访问ThreadLocal时,都会返回该线程内部的唯一对象副本。这样就可以在多个线程中使用同一个SimpleDateFormat对象,避免了多线程并发访问的问题。
以下是一个示例代码:
```
public class ThreadSafeDateFormat {
private static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
private static final ThreadLocal<SimpleDateFormat> THREAD_LOCAL = ThreadLocal.withInitial(() -> new SimpleDateFormat(DATE_FORMAT));
public static String formatDate(Date date) {
return THREAD_LOCAL.get().format(date);
}
public static Date parse(String strDate) throws ParseException {
return THREAD_LOCAL.get().parse(strDate);
}
}
```
在上面的代码中,我们使用ThreadLocal来创建SimpleDateFormat对象,并提供了两个静态方法formatDate和parse,分别用于将时间格式化为字符串和将字符串解析为时间。在多线程环境下,可以直接调用这两个静态方法,无需担心线程安全问题。