多线程下 SimpleDateFormat
来源:互联网 发布:电脑关机软件 编辑:程序博客网 时间:2024/05/21 02:50
在爬虫爬到网页后,可能需要对时间进行格式化,以时间戳的方式录入数据库。但我们前提不知道不同的网站的时间格式化方式,但又懒得去数据库里面对每个站点进行一一配置,所以,在程序里面,直接构造了一堆 SimpleDateFormat 对象,作为静态对象,将最有可能命中的放于前面,每次用这个队列去格式化,符合了就直接返回。爬虫跑了几十分钟后,发现报了一个 Exception , Exception in thread "content parse - thread-3" java.lang.NumberFormatException: multiple points .但一般情况下,进行格式化时,默认只需要 catch ParseException,于是,这个 exception 出现时,由于没有 catch,其级别又比较高,会导致当前线程退出。经过查询相关文档,SimpleDateFormat 不是线程安全的,也就是说,它会保存某个中间状态,多个线程同时使用一个 SimpleDateFormat 对象会同时对它的状态进行更改,造成格式化后的结果不正确,这是最好的情况,因为谁也不知道此时发生了错误,线程不会退出,但这个错误会非常难排查。最坏的情况就是,多个线程更改了 SimpleDateFormat 的状态,使其处于一个错误的状态,上面报出的问题,我猜想是因为 SimpleDateFormat 内部使用了浮点数,并且线程会更改这个浮点数,比如,将某一位上放置一个小数点,结果造成了那个浮点数包含了两个小数点,所以就报了 multiple points 这个异常。
0 0
- 多线程下 SimpleDateFormat
- SimpleDateFormat在多线程下不安全
- SimpleDateFormat多线程下的异常
- 多线程下SimpleDateFormat使用出错
- 多线程下SimpleDateFormat使用出错
- SimpleDateFormat 多线程环境下慎用,会报异常
- java.text.SimpleDateFormat多线程下的问题
- 多线程下调用SimpleDateFormat的问题
- SimpleDateFormat多线程问题
- SimpleDateFormat多线程问题
- SimpleDateFormat多线程调用问题
- SimpleDateFormat在多线程如何使用
- SimpleDateFormat导致的多线程问题
- 高并发下的SimpleDateFormat
- 【Java 陷阱】SimpleDateFormat 时间格式化多线程异常
- SimpleDateFormat
- SimpleDateFormat
- SimpleDateFormat
- 进程间的通信(互斥锁、条件变量、读写锁、文件锁、信号灯)
- 如何让apache支持URL重写
- 总结造纸业中水回用方案及处理工艺
- 6个变态的C语言Hello World程序
- iOS的蓝牙部分了解
- 多线程下 SimpleDateFormat
- 关于cocos2d-x 打包成.exe后 MSVCP110D.dll 丢失问题
- 简短的js判断手机横竖屏
- IOS applicationWillResignActive
- linux系统编程之信号(七):被信号中断的系统调用和库函数处理方式
- 开场白
- ctags 使用细节
- UVA 11991 Easy Problem from Rujia Liu?
- Spring 的Hibernate事务管理机制 .