多线程报错: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; } }
时间: 2024-11-03 21:09:00