`
85977328
  • 浏览: 1904523 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SimpleDateFormat多线程问题

阅读更多
类SimpleDateFormat可以将时间格式在java.util.Date 和string之间进行相互转换。使用parse和format方法。在程序运行中却抛出java.lang.NumberFormatException异常。
java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Long.parseLong(Long.java:415)
at java.lang.Long.parseLong(Long.java:452)
at java.text.DigitList.getLong(DigitList.java:149)
at java.text.DecimalFormat.parse(DecimalFormat.java:1068)
at java.text.SimpleDateFormat.subParse(SimpleDateFormat.java:1388)
at java.text.SimpleDateFormat.parse(SimpleDateFormat.java:1156)
at java.text.DateFormat.parse(DateFormat.java:333)
检查了一下输入的字串内容并没有错误。后来发现问题的根本原因是将SimpleDateFormat定义为静态属性了,多线程调用。查看了资料知道时间格式不是同步的,应当为每个线程单独创建一个实例,如果需要多线程并发地访问一个SimpleDateFormat,必须要线程同步
分享到:
评论
1 楼 LinApex 2013-12-05  
定义成局部变量即可。

相关推荐

    ThreadLocal:如何优雅的解决SimpleDateFormat多线程安全问题

    目录SimpleDateFormat诡异bug复现SimpleDateFormat诡异bug字符串日期转Date日期(parse)Date日期转String类型(format)SimpleDateFormat出现bug的原因如何解决SimpleDateFormat多线程安全问题局部变量使用...

    simpleDateFormat是线程不安全的

    在给定的`TestDateFormat.java`文件中,可能包含了一个示例代码,演示了`SimpleDateFormat`在多线程环境中的潜在问题,以及如何通过上述策略之一来避免这些问题。分析这个文件可以帮助我们更好地理解线程安全问题的...

    高并发之-SimpleDateFormat类的线程安全问题和解决方案.docx

    缓存机制使用了一个缓存数组来存储解析和格式化的结果,但是这个缓存数组是共享的,这意味着在多线程环境中,多个线程可能会同时访问和修改这个缓存数组,导致线程安全问题。 重现SimpleDateFormat类的线程安全问题...

    详解SimpleDateFormat的线程安全问题与解决方案

    理解`SimpleDateFormat`的线程安全问题对于开发多线程应用程序至关重要。通过使用`ThreadLocal`、每次使用时创建新实例或切换到`java.time`包中的类,可以有效地避免这类问题,提高程序的稳定性和可靠性。在实际开发...

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

    SimpleDateFormat类不是线程安全的,这意味着在多线程环境下,如果多个线程同时访问同一个SimpleDateFormat实例,可能会导致各种问题,例如转化的时间不正确、报错、线程被挂死等等。 知识点2: 创建...

    关于SimpleDateFormat的非线程安全问题及其解决方案.docx

    然而,在多线程环境下,`SimpleDateFormat`存在非线程安全的问题,这可能会导致程序运行时出现异常或者错误的结果。 #### 二、问题分析 ##### 1. 非线程安全的原因 `SimpleDateFormat`类内部维护了一些线程不安全...

    Java SimpleDateFormat线程安全问题原理详解

    在多线程环境下,如果多个线程同时使用同一个SimpleDateFormat对象,可能会导致日期时间格式化结果不正确或抛出异常。 问题的根源在于SimpleDateFormat的parse方法不是线程安全的。在多线程环境下,如果多个线程...

    Java多线程环境下SimpleDateFormat类安全转换

    本文主要介绍了Java多线程环境下SimpleDateFormat类的安全转换,通过示例代码详细介绍了如何解决SimpleDateFormat类多线程环境下转换错误问题。 1. SimpleDateFormat类的线程安全问题 SimpleDateFormat类是Java中...

    SimpleDateFormat线程不安全的5种解决方案.docx

    在多线程环境下,SimpleDateFormat 由于其内部状态在格式化过程中可能会被多个线程修改,因此会出现线程不安全的现象。解决这一问题的方法有多种,包括将 SimpleDateFormat 定义为局部变量、使用 synchronized 或 ...

    DateFormat多线程问题

    这篇博客将深入探讨`DateFormat`在多线程环境下的问题及其解决方案。 `DateFormat`类在设计时并未被声明为线程安全的。这意味着当多个线程同时访问和修改同一个`DateFormat`实例时,可能会出现竞态条件,导致结果不...

    由浅入深解析 SimpleDateFormat

    1. SimpleDateFormat 是线程不安全的,因此在多线程环境下使用需要特别注意。 2. 创建 SimpleDateFormat 实例需要消耗大量的资源,因此应当尽量少创建实例。 3. SimpleDateFormat 可以使用 applyPattern 方法修改...

    有关SimpleDateFormat的常用方法说明

    - `SimpleDateFormat`是线程不安全的,如果在多线程环境中使用,需要考虑同步问题。 - 日期和时间的格式化字符串要与实际情况对应,避免出现理解错误。 以上就是关于`SimpleDateFormat`的一些常见用法和注意事项,...

    java SimpleDateFormat &Calendar

    需要注意的是,由于`SimpleDateFormat`不是线程安全的,所以在多线程环境中,建议为每个线程创建单独的实例。 `Calendar`类则是Java中更底层的日期和时间工具,它提供了一套完整的API来操作日期和时间,包括添加、...

    Java多线程编程的线程安全性.docx

    Java标准库中有一些类,如ArrayList、HashMap和SimpleDateFormat,并未设计为线程安全,因此在多线程环境下直接使用可能导致数据不一致或其他问题。开发者应当了解每个类的线程安全特性,以便做出正确的选择和适当地...

    JavaSE 之 传统日期格式化的线程问题

    在上述代码的错误示例中,`Test1`类的`test01`方法创建了一个全局的`SimpleDateFormat`实例`sdf`,然后将其用于多线程环境。由于多个线程可能会同时调用`sdf.parse()`方法,这可能导致线程间的冲突,因为`...

    Java 实例 - 格式化时间SimpleDateFormat使用源代码-详细教程.zip

    `SimpleDateFormat`不是线程安全的,所以在多线程环境中,要么为每个线程创建单独的实例,要么在每次使用后进行同步。 8. **替代方案**: Java 8引入了`java.time`包,其中的`DateTimeFormatter`类提供了更现代且...

    java代码-SimpleDateFormat YYYY解析问题

    1. 日期格式化类的线程安全问题:`SimpleDateFormat` 不是线程安全的,因此在多线程环境中,建议为每个线程创建单独的实例,或者使用 `java.time.format.DateTimeFormatter`(Java 8及更高版本)。 2. 日期时间API...

    spring-boot 多线程并发定时任务的解决方案

    Spring Boot 多线程并发定时任务的解决方案 Spring Boot 提供了一个简单的方式来实现定时任务,使用 `@Scheduled` 注解可以轻松地实现定时任务。但是在实际开发中,我们需要实现多线程并发的定时任务,以提高任务...

    第五章.常用类.java.API概述——Date类,Calendar类,SimpleDateFormat类,Big.pdf

    需要注意的是,SimpleDateFormat不是线程安全的,所以在多线程环境下,应为每个线程创建单独的实例。 总结来说,这三个类在处理日期和时间时各有特点。Date类是最基础的,而Calendar类提供了更丰富的操作,...

Global site tag (gtag.js) - Google Analytics