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)

SimpleDateFormat,Calendar 线程非安全的问题

SimpleDateFormat时间格式化存在线程安全问题

JAVA干货|让我告诉你SimpleDateFormat线程不安全的5种解决方案!