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;
    }
}
原文地址:https://www.cnblogs.com/newlangwen/p/7590621.html