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 processing failed; nested exception is java.lang.NumberFormatException: multiple points] with root cause
java.lang.NumberFormatException: multiple points


但是调试发现传过来的时间没问题,一时一头雾水,想看源码,觉得太费时间,结果在度娘上搜了下发现有同僚碰到过,说是:

多线程方法中使用了共享变量SimpleDateFormat,报如下错误:
 Java.lang.NumberFormatException: multiple points
 at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1084
原因:
SimpleDateFormat是线程不安全的,切忌切忌!
解决:
在线程方法中,new SimpleDateFormat();
 
例:
       SimpleDateFormat sdf = new SimpleDateFormat();

而回顾自己的代码中确实有一个静态的SimpleDateFormat实例,至此问题明了。

但还有一个问题: provider中的rest api怎么会发生多线程,先留着吧

时间: 2024-10-14 07:03:50

NumberFormatException: multiple points的相关文章

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(D

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

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

请注意SimpleDateFormat不是线程安全的

今天有同事说SimpleDateFormat不是线程安全的,于是我做了试验 1 public class TestSimpleDateFormat 2 { 3 final static SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); 4 5 public static void main(String[] args) { 6 7 int NUMBER_OF_THREADS = 1000; 8 9 for( int i =

深入理解Java:SimpleDateFormat安全的时间格式化 ;

想必大家对SimpleDateFormat并不陌生.SimpleDateFormat 是 Java 中一个非常常用的类,该类用来对日期字符串进行解析和格式化输出,但如果使用不小心会导致非常微妙和难以调试的问题,因为 DateFormat 和 SimpleDateFormat 类不都是线程安全的,在多线程环境下调用 format() 和 parse() 方法应该使用同步代码来避免问题.下面我们通过一个具体的场景来一步步的深入学习和理解SimpleDateFormat类. 一.引子 我们都是优秀的程

JDK中的SimpleDateFormat线程非安全

在JDK中使用SimpleDateFormat的时候都会遇到线程安全的问题,在JDK文档中也说明了该类是线程非安全的,建议对于每个线程都创建一个SimpleDateFormat对象.如下面一个Case中,多个线程去调用SimpleDateFormat中得parse方法: @Test public void testUnThreadSafe() throws Exception { final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM

SimpleDateFormat是线程不安全的,切忌切忌!

多线程方法中使用了共享变量SimpleDateFormat,报如下错误: java.lang.NumberFormatException: multiple points  at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1084 原因: 解决: 在线程方法中,new SimpleDateFormat(); SimpleDateFormat是线程不安全的,切忌切忌!

【转】深入理解Java:SimpleDateFormat安全的时间格式化

[转]深入理解Java:SimpleDateFormat安全的时间格式化 想必大家对SimpleDateFormat并不陌生.SimpleDateFormat 是 Java 中一个非常常用的类,该类用来对日期字符串进行解析和格式化输出,但如果使用不小心会导致非常微妙和难以调试的问题,因为 DateFormat 和 SimpleDateFormat 类不都是线程安全的,在多线程环境下调用 format() 和 parse() 方法应该使用同步代码来避免问题.下面我们通过一个具体的场景来一步步的深入

SimpleDateFormat使用和线程安全问题

SimpleDateFormat 是一个以国别敏感的方式格式化和分析数据的具体类. 它允许格式化 (date -> text).语法分析 (text -> date)和标准化. SimpleDateFormat 允许以为日期-时间格式化选择任何用户指定的方式启动. 但是,希望用 DateFormat 中的 getTimeInstance. getDateInstance 或 getDateTimeInstance 创建一个日期-时间格式化程序. 每个类方法返回一个以缺省格式化方式初始化的日期/

java:SimpleDateFormat使用注意项

前言:Java中,说起日期转换,SimpleDateFormat不得不提,但是在实战操作中,使用时千万要小心.否则将会出现" java.lang.NumberFormatException: multiple points"错误,那么究竟是为什么呢? 首先,请随小编来看看一个用到SimpleDateFormat的日期转换类. package com.mwq.format; import java.text.ParseException; import java.text.SimpleD