Java多线程SimpleDateFormat
Posted newlangwen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java多线程SimpleDateFormat相关的知识,希望对你有一定的参考价值。
多线程报错:java.lang.NumberFormatException: multiple points
SimpleDateFormat是非线程安全的,在多线程情况下会有问题,在每个线程下得各自new SimpleDateFormat()就可以了
实现有两种方法:
1.
public class DateTools { public static Date parse(String formatPattern,String dateString) throws ParseException{ return new SimpleDateFormat(formatPattern).parse(dateString); } public static String format(String formatPattern,Date date){ System.out.println("format"); return new SimpleDateFormat(formatPattern).format(date); } }
2. ThreadLocal 每个线程都有自己的私有数据
package threadDemo.date; import java.text.SimpleDateFormat; public class DateTools { private static ThreadLocal<SimpleDateFormat> threadLocals = new ThreadLocal<SimpleDateFormat>(); public static SimpleDateFormat getSimpleDateFormat(String datePattern){ SimpleDateFormat sdf = null; sdf = threadLocals.get(); if(sdf ==null){ sdf = new SimpleDateFormat(datePattern); threadLocals.set(sdf); } return sdf; } }
以上是关于Java多线程SimpleDateFormat的主要内容,如果未能解决你的问题,请参考以下文章
《java多线程编程核心技术》----simpleDateFormat非线程安全
Java-JUC(十四):SimpleDateFormat是线程不安全的
案例-- 线程不安全对象(SimpleDateFormat)