java.lang.NumberFormatException: multiple points错误问题

最近项目一直会出现时间转换报错,一直不知道是什么问题???

java.lang.NumberFormatException: multiple points
    at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1110)
    at java.lang.Double.parseDouble(Double.java:540)
    at java.text.DigitList.getDouble(DigitList.java:168)
    at java.text.DecimalFormat.parse(DecimalFormat.java:1321)
    at java.text.SimpleDateFormat.subParse(SimpleDateFormat.java:1793)
    at java.text.SimpleDateFormat.parse(SimpleDateFormat.java:1455)

代码如下:

public final class DateUtil {

    private static SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");

    public static Date parseDateTime(String dateTimeStr) {
        try {
            return dateFormat.parse(dateTimeStr);
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
    }

}

如果是上述代码,那么在多线程环境下,你可能会收到如标题所示的错误。

解决办法

1、建议在每个方法中都new一个新的SimpleDateFormat对象,这样子就可以避免这种问题。

2、也可以使用保存线程局部变量的ThreadLocal对象来保存每一个线程的SimpleDateFormat对象。

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateUtils {

private static final String format = "yyyy-MM-dd";

    //每一个线程
    private static final ThreadLocal<SimpleDateFormat> threadLocal = new
            ThreadLocal<SimpleDateFormat>();

    public static Date covertDateStrToDate(String dateStr){
        SimpleDateFormat sdf = null;
        sdf = threadLocal.get();
        if (sdf == null){
            sdf = new SimpleDateFormat(format);
        }
        //
        Date date = null;
        try {
            System.out.println("当前线程为:" + Thread.currentThread().getName());
            date = sdf.parse(dateStr);
        } catch (ParseException e) {
            e.printStackTrace();
        }

        return date;
    }
}

原文地址:https://www.cnblogs.com/mr-wuxiansheng/p/10340513.html

时间: 2024-10-01 03:57:37

java.lang.NumberFormatException: multiple points错误问题的相关文章

多线程出现 java.lang.NumberFormatException: multiple points

多线程下导入数据,发现同一个文件每次导入成功的数据量都不一致,经检查,某些数据偶尔会报错  java.lang.NumberFormatException: multiple points 原因是导入数据时使用了DateUtil格式化时间,共享了同一个SimpleDateFormat示例,SimpleDateFormat是线程不安全的 解决办法是在每个 线程/读取方法 中实例化SimpleDateFormat 还需检查是否还有其他的线程不安全类 原文地址:https://www.cnblogs.

NumberFormatException: multiple points

问题描述: 有两个项目,一个ssmp.一个性能数据提供perf-provider ,后者给前者提供rest api: 突然有一天,来了新需求,ssmp在短时间内需要发送大量的rest请求,请求中有一个 时间参数,传到后台做时间格式化时开始报错: 严重: Servlet.service() for servlet [dispatcher] in context with path [/storage-performance-provider] threw exception [Request pr

java.lang.NumberFormatException 错误及解决办法

package com.geelou.test; public class ErrTest { public static void main(String[] args) { String numString = "1 "; System.out.println(Integer.parseInt(numString)); } } 错误提示信息如下: 1 Exception in thread "main" Java.lang.NumberFormatExcepti

java.lang.NumberFormatException: For input string: &quot;1608020001 &quot; 错误

错误: java.lang.NumberFormatException: For input string: "1608020001 "    at java.lang.NumberFormatException.forInputString(Unknown Source)    at java.lang.Integer.parseInt(Unknown Source)    at java.lang.Integer.parseInt(Unknown Source)    at cn.

java.lang.NumberFormatException: For input string: &quot;undefined&quot;

在将字符串转换为数字时导致此错误,解决此问题的思路:1.添加Try catch语句,2.判断字符串是否为数字,将介绍java中判断字符串是否为数字的方法的几种方法. 完整错误信息: java.lang.NumberFormatException: For input string: "undefined" at java.lang.NumberFormatException.forInputString(Unknown Source) at java.lang.Integer.pars

java.lang.NumberFormatException: For input string:""

今天写了个java的小程序在运行的时候抛出下面的异常:java.lang.NumberFormatException: For input string: "" .定位到源程序中出错的地方: String[] cols = key.toString().split("    ");   return Integer.parseInt(cols[0]) % numPartitions; 通过查询java API 以及百度,了解到抛NumberFormatExcepti

java.lang.NumberFormatException: For input string: &quot;title&quot;异常

java.lang.NumberFormatException: For input string: "title" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Integer.parseInt(Integer.java:492) at java.lang.Integer.parseInt(Integer.java:527) at javax.

java.lang.NumberFormatException: empty String

1.错误描述 java.lang.NumberFormatException: empty String at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1020) at java.lang.Double.parseDouble(Double.java:540) service.impl.BillServiceImpl.exportBillExcel(BillServiceImpl.java:301) a

Caused by: java.lang.NumberFormatException: For input string: &quot;&quot;

1.错误描述 java.lang.NumberFormatException: For input string: "" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Long.parseLong(Long.java:453) at java.lang.Long.parseLong(Long.java:483) at org.springfram