java.lang.NumberFormatException: multiple points异常的解决

java.lang.NumberFormatException: multiple points 今天生产环境报了如下异常: java.lang.NumberFormatException: multiple points at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1890) at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal... 阅读详情

结论

SimpleDateFormat是非线程安全的。

前言

2020年第一篇博客哈。最近在项目中,遇到随机性的mybatis查询问题。每次问题都是出在相同的字段上。并且类型为日期。就是莫名其妙的报java.lang.NumberFormatException异常。

经过

bug发生的很其妙,前端大概是这样,最开始在页面中就请求一个list数据,当时没啥问题,但是在之后,前端加了个同时获取下拉框数据的请求。问题就变得很奇怪了(下拉框和列表都有日期字段)。列表中的日期会随机的抛出异常。当时很莫名其妙,但是着急就没去管它。过了一段时间,我频繁刷新页面这个异常的发生概率增大。如此频繁的发生,就不得不解决了。

定位问题

问题就是很奇怪,因为我自定义了TypeHandler对日期进行处理。偶尔在解析是会提示日期字段的值为空字符串。但是数据库是确确实实有的。直觉告诉我问题的根源应该是多线程造成的。所以我就疯狂的刷新前端页面,(这种方式相比用jmetor是有点low哈,但胜在快捷)。错误异常频繁发生了。那就可以肯定就是多线程造成的了。但是哪里会有线程问题啊?我就看了一下自定义TypeHandler的代码

private final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
private final SimpleDateFormat sdfDate = new SimpleDateFormat("yyyy-MM-dd");

看到这里我心里一万句。。。,最近在看JAVA并发编程,里面已经很明确的说了SimpleDateFormat是非线程安全的。我居然还敢这样用,佛曰我不入地狱谁入地狱。都这样写了,我不遭谁遭。我不能坑队友,是吧。
当时在设计TypeHandle的时候没有考虑线程安全的问题。

解决

问题的根源找到了,解决就好办了。把日期解析换成线程安全就行了。

1.肯定有人想最快的方式就是把SimpleDateFormat换成局部变量,我这能说千万别这么干!这是一时舒服,后面大坑。TypeHandler的处理,在之后必然是高并发的。SimpleDateFormat这货的初始化带来的性能损坏自行考究。
2.使用ThradLocal封装SimpleDateFormat 。本质是每个线程初始化一个属于它的SimpleDateFormat对象。
3.使用joda库处理日期(推荐)。如果你的项目没有joda-time库,快添加吧。


import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;

private static final DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
private static final DateTimeFormatter dateFormatter = DateTimeFormat.forPattern("yyyy-MM-dd");
//使用DateTime解析和格式化。
//格式化
//dateTime.toString(dateFormatter)
//解析
//DateTime.parse(date,dateTimeFormatter).toDate()

注意这里的DateTimeFormatter是joda-time的不是java原生的。

总结

写一些工具类、处理类,一定要考虑线程安全的问题。其次再是高并发下的性能问题。

利用setEcoMode优化innovus中的ecoAddRepeater批量操作效率 本文详细介绍了在Cadence Innovus工具中,如何利用setEcoMode命令的batchMode参数,显著提升ecoAddRepeater命令在批量插入buffer或inverter时的操作效率。通过合并重复的初始化和数据库更新开销,该模式可将大规模时序修复操作的执行速度提升数倍,并提供了完整的脚本示例与最佳实践,帮助后端设计工程师优化ECO流程。 阅读详情

相关推荐

数据结构实验1.2—高精度计算PI值(西工大)

这是数据结构第二题的题目,是让我们根据用户的需求来计算派的值 这是题目的详细描述,刚看到这道题的时候,我是真的头大,完全没有思路,于是查找了一些大佬的笔记后才开始编写 这是我在写这些代码是所运用到的数学反三角函数幂次展开式的知识。 下面是正确的代码以及我的一些见解,和需要注意的一些地方。希望能对你有所帮助。如有更加精简的算法,请在评论区留下你的算法!!!谢谢!!! #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdl

abcdef0623的博客 5831

错误: java.lang.NumberFormatException: multiple points 多个小数点

遇到错误为java.lang.NumberFormatException: multiple points 后台报错为: java.lang.NumberFormatException: multiple points at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1890) at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:11

一起记录GIS学习 5791

Jmeter压测报告

账户分析压测报告 一、测试内容 本次测试是针对账户分析进行的压力测试,在账户分析查询接口中,只对用户资产查询接口进行压力测试,其中不包含用户签名校验功能。 二、测试方法 本次采用apache的开源测试工具jmeter,采用本地动态拼装请求数据并通过http协议GET方式发送每日盈亏查询请求。并采用1000个用户账号测试访问情况。...

qq_31108731的博客 6624

java.lang.NumberFormatException: multiple points解决办法

就跟错误提示一样,类型转换时,被转换的对象有多个小数点造成的 错误代码如下: public static void main(String[] args) { Double.valueOf("1.1.1"); } 解决方案: 自己检查一下被转换的对象数据符不符合Double... ...

大造梦家的博客 1万+

水文模型新手必看:用SWAT-CUP做参数率定,如何正确设置预热期、率定期和验证期?(附数据准备避坑指南)

本文详细介绍了使用SWAT-CUP进行水文模型参数率定的完整流程,重点解析了预热期、率定期和验证期的正确设置方法,并提供了数据准备的避坑指南。通过实操步骤和常见问题解决方案,帮助新手快速掌握SWAT-CUP参数率定的核心技巧,提升水文模型模拟精度。

weixin_26875109的博客 372

农业杂草检测——棉花杂草数据集

然后将本层13×13的特征图谱经过×2上采样扩充到26×26,并与上层中26×26的特征图谱拼接,得到新的26×26的特征图谱,在该特征尺度上进行第二次预测,此时得到的特征图谱是相对输入图像16倍下采样,具有中尺度感受野,适合检测中等尺度对象;通过目标检测,能够及时清除杂草,减少病虫害的滋生和传播,保障棉花的健康生长,并有助于降低生产成本。对于地膜覆盖的棉田,由于膜内耕作层土温高、底墒好,杂草出苗早而集中,一般覆膜后5 - 7天杂草陆续出土,在墒情好的情况下,15天左右即形成出土高峰。

qq_38220914的博客 1245

java.lang.NumberFormatException: multiple points报错解决方法

报错如下: 提示写的日期工具类中stringToDate方法在线程中有问题,不太安全; 解决方法: 只需要在线程中将此类调用直接去掉,直接在线程中写日期格式,如下 在线程方法中,new SimpleDateFormat(); ...

Knight_Key的博客 7678

EMC基础知识总结

电磁干扰(Electromagnetic Interference),简称EMI,有和两种。传导干扰主要是电子设备产生的干扰信号通过导电介质或公共电源线互相产生干扰;辐射干扰是指电子设备产生的干扰信号通过空间耦合把干扰信号传给另一个电网络或电子设备。

学海无涯的专栏 1363

java.lang.NumberFormatException: multiple points问题

一般这种问题主要是因为SimpleDateFormat在多线程环境下,是线程不安全的,所以如果你在多线程环境中共享了SimpleDateFormat的实例,比如你在类似日期类中定义了一个全局的SimpleDateFormat对象,这样子肯定会出现上述的报错,比如你的代码是这样的 package com.utils; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; /**

Smile yourlife 569

Windows 11 安装 OpenClaw(龙虾):不用WSL、不用虚拟机、启动、使用、停止、卸载

本文详解 Windows 11 原生安装 OpenClaw(龙虾)全流程,无需 WSL 或虚拟机。涵盖环境配置、安全警示、模型接入(如通义千问)及技能初始化。提供启动、文件自动化操作、停止与卸载的完整指南,并附常见认证过期解决方案。助您快速部署本地 AI 智能体,实现电脑操作自动化,提升工作效率。

寒水馨 · 轻量级技术文档 · hanshuixin.org 897

ESP32-IDF开发实例-外部Flash与FatFs文件系统数据存取

FatFs是用于小型嵌入式系统的通用FAT / exFAT文件系统模块。FatFs模块是按照ANSI C(C89)编写的,并且与磁盘I/O层完全分开。因此,它独立于平台。它可以并入资源有限的小型微控制器中,例如8051,PIC,AVR,ARM,Z80,RX等。ESP32-IDF对FatFs提供了良好的支持。

视觉与物联智能 2915

时间转换报java.lang.NumberFormatException: multiple points问题

最近项目一直会出现时间转换报错,一直不知道是什么问题, java.lang.NumberFormatException: multiple points     at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1110)     at java.lang.Double.parseDouble(Double...

小兵qwer的专栏 1250

【HAL库】STM32CubeMX开发----STM32F407----ETH+LAN8720A+LWIP----ping通

本次实验以芯片为MCU,使用25MHz外部时钟源。以太网PHY层芯片为LAN8720A,由MCU引脚PA8提供时钟。

MQ0522的博客 4841

java时间格式转换java.lang.NumberFormatException: multiple points问题

最近在做项目过程中转移过一次服务器,但是原先的上传的文件过大不好转移,因此特地写了一段代码进行控制指定时间访问文件从原服务器读取,但是进行时间格式转换的时候时不时的会遇到这样的异常 java.lang.NumberFormatException:multiplepoints atsun.misc.FloatingDecimal.readJavaFormatString(FloatingD...

liao_xiao的博客 2224

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

multiple points java_java.lang.NumberFormatException: multiple points问题

在帮一个朋友写项目的时候遇到一个异常,记录一下。我的一个方法调用了我写的 DateUtil 的一个方法,偶发性会出现异常。方法请求越频繁异常出现概率越高,如果Debug去看,异常又基本不出现,似乎和多线程相关。异常内容如下java.lang.NumberFormatException: multiple pointsat sun.misc.FloatingDecimal.readJavaForma...

weixin_30070663的博客 652

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

SimpleDateFormat java.lang.NumberFormatException: multiple points

时间转换报java.lang.NumberFormatException: multiple points问题   java.lang.NumberFormatException: multiple points at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1101) at java....

zbzhangzi的专栏 291

124.Spark大型电商项目-Spark Streaming+Kafka调试之java.lang.NumberFormatException: multiple points

目录 解决问题:java.lang.NumberFormatException: multiple points 出现问题的代码 出现问题的原因 解决方法 为每个线程创建独立的格式实例 共用一个格式,但是外部代码进行同步 解决问题:java.lang.NumberFormatException: multiple points 在实时广告流统计模块测试的时候,使用的是数据库连...

someby的博客 532

multiple points java_java.lang.NumberFormatException: multiple points

java.lang.NumberFormatException:multiplepointsatsun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1084)atjava.lang.Double.parseDouble(Double.java:482)atj...java.lang.NumberFormatExcep...

weixin_39746241的博客 177

multiple points java_Java开发网 - 求救NumberFormatException异常multiple points

Posted by:hanry_maryPosted on:2006-05-18 11:01服务器抛出了这个异常,我在action中使用方法如下:DateFormat df = new SimpleDateFormat("yyyy-MM-dd");Date cur = df.parse(xtrq);其中xtrq是从数据库中得到的。但有时会出现下面异常,各位大侠这是什么意思啊java.lang.Nu...

weixin_31446315的博客 261

java.lang.NumberFormatException: multiple points 异常

平时使用SimpleDateFormat的时候都是在单线程的情况下使用的,今天在改写别人的代码,发现每个类中都会写大量的SimpleDateFormat实例。作为一个程序特有的洁癖开始对代码进行优化。 其实所谓优化操作也很简单,就是把所有的SimpleDateFormat抽到一个DateUtils类中,并提供静态方法。 优化之后,奇怪的事情发生了。部分程序报下面异常:java.lang.Numb

程序新视界 1万+

java.lang.NumberFormatException: multiple points 错误分析

java.lang.NumberFormatException: multiple points 出现这个问题的原因 就是Double转换的时候出现了 数字小数点多了

ykk_java的博客 1581

java.lang.NumberFormatException: multiple points 问题

今天使用多线程解析excel,并持久化。 发现会经常(时常,有时候有有时候没有)出现java.lang.NumberFormatException: multiple points 和j ava.lang.NumberFormatException: For input string: ""; 报错的地方是项目用SimpleDateFormat写了个DateUtil工具类,用来时间转换的,代码

Alex_majm的博客 1742

java.lang.NumberFormatException: multiple points特例及解决!

java.lang.NumberFormatException: multiple points 大多数情况否是网上说得那样,是因为多线程的关系,但是我遇到的情况却是特例,是在SnmpGet的返回值处理时,报的异常; 代码如下: List集合中放的是,下面的oid = value ,是属于VariableBinding类型的; .1.3.6.1.4.1.20

Daopin Blog 1万+
上一篇: spring boot2项目基础之mybatis-plus
下一篇: 基于docker rancher以及elk等常用服务搭建
mt23
博客等级 码龄12年 33粉丝 91原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值