解决SimpleDateFormat线程安全问题
2024-09-30 10:48:50
package com.tanlu.user.util; import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date; /**
* 考虑到SimpleDateFormat为线程不安全对象,故应用ThreadLocal来解决,
* 使SimpleDateFormat从独享变量变成单个线程变量
*/
public class ThreadLocalDateUtil { //写法1:
/*private static ThreadLocal<DateFormat> threadLocal = new ThreadLocal<DateFormat>() {
@Override
protected DateFormat 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);
}*/ //写法2:
private static final String date_format = "yyyy-MM-dd HH:mm:ss";
private static ThreadLocal<DateFormat> threadLocal = new ThreadLocal<DateFormat>(); public static DateFormat getDateFormat() {
DateFormat df = threadLocal.get();
if(df == null){
df = new SimpleDateFormat(date_format);
threadLocal.set(df);
}
return df;
} public static String formatDate(Date date) throws ParseException {
return getDateFormat().format(date);
} public static Date parse(String strDate) throws ParseException {
return getDateFormat().parse(strDate);
} }
最新文章
- java从基础知识(七)java集合
- java类加载相关
- 一个端口操作类PortHelper
- 1106. Two Teams(dfs 染色)
- asp.net MVC 使用JQuery.Ajax
- kafka解释三的具体:发展Kafka应用
- [leetcode-582-Kill Process]
- String,StringBuffer,StringBuilder的区别
- myeclipse项目在Tomcat服务器部署问题
- JAVA面试精选【Java基础第二部分】
- HDU4607(求树中的最长链)
- SpringBoot------8080端口被占用抛出异常
- QT 菜单资源设置
- 【四校联考】【比赛题解】FJ NOIP 四校联考 2017 Round 7
- BZOJ 1834--网络扩容(最大流&;费用流)
- java编写银行管理 。ATM管理
- Nginx学习.md
- linux 系统下配置java环境变量
- Flask的配置文件
- maxsigma