本文主要是介绍使用ThreadLocal保证DateFormat线程安全,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
大家都知道DateFormat是线程非安全的, 一般在多线程环境下, 必须为每一次日期时间的转换创建一个DateFormat, 这里有一个更高效的做法:
/*** 使用ThreadLocal以空间换时间解决SimpleDateFormat线程安全问题。* 创建一个ThreadLocal类变量,这里创建时用了一个匿名类,覆盖了initialValue方法,主要作用是创建时初始化实例。* @author zjhn-llq* @date 2019/10/23 10:22*/
public class DateUtil {public static ThreadLocal<DateFormat> DATE_FORMAT_THREAD_LOCAL=new ThreadLocal<DateFormat>(){protected synchronized DateFormat initialValue() {return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");}};public static Date convertStringToDate(String dateStr) throws ParseException {Date date = DATE_FORMAT_THREAD_LOCAL.get().parse(dateStr);return date;}public static void main(String[] args) throws ParseException {Date date = convertStringToDate("2019-10-23 10:26:00");System.out.println(date);}
}
这篇关于使用ThreadLocal保证DateFormat线程安全的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!