最近项目在做压力测试时,总是出现java.lang.NumberFormatException: multiple points错误;源于代码里使用SimpleDateFormat来解析字符串日期,开始以为是传入的被解析字符串非法,通过debug调试,发现不是该问题引起。然后去百度和查找API, API里面标记 SimpleDateFormat中的日期格式不是同步的。推荐(建议)为每个线程创建独立的格式实例。如果多个线程同时访问一个格式,则它必须保持外部同步。
JDK原始文档如下:
Synchronization:
Date formats are not synchronized.
It is recommended to create separate format instances for each thread.
If multiple threads access a format concurrently, it must be synchronized externally.
通过看JDK源码来看看为什么SimpleDateFormat和DateFormat类不是线程安全的真正原因:
SimpleDateFormat继承了DateFormat,在DateFormat中定义了一个protected属性的 Calendar类的对象:calendar。只是因为Calendar累的概念复杂,牵扯到时区与本地化等等,Jdk的实现中使用了成员变量来传递参数,这就造成在多线程的时候会出现错误。
具体参考:http://www.cnblogs.com/peida/archive/2013/05/31/3070790.html
相关推荐
标题"Qt 多线程访问同一个变量"涉及到的是如何在多线程环境下确保对共享资源(此处为一个全局变量)的安全访问。描述中提到了使用互斥锁来解决这个问题,并通过创建两个线程ThreadA和ThreadB来演示这一过程。 首先...
mysql是线程不安全的,mysql不是线程安全的,多线程共用同一个mysql连接是会崩溃的 QT的QSqlDatabase是基于mysql的,所以...现讲明mysql为什么是线程不安全的,以及在多线程环境下如何使用mysql,QSqlDatabase不崩溃的方法.
在多线程环境中,COM提供了不同的线程访问策略,主要包括单线程公寓(STA, Single Threaded Apartment)和多线程公寓(MTA, Multi Threaded Apartment)。本示例“COM多线程访问演示”旨在帮助开发者理解并掌握如何...
在提供的示例中,"多线程同步(多线程如何访问临界区资源)"演示了如何在多线程环境中使用临界区保护共享资源。首先,定义一个全局或静态变量作为共享资源,然后创建多个线程。每个线程在执行时都会尝试访问这个资源...
在Python编程中,多线程是一种并发执行任务的机制,尤其在处理I/O密集型任务如网络请求时,能够显著提高程序效率。本教程将详细讲解如何使用Python的多线程来实现对多个网址的快速访问,并记录访问结果。 首先,...
本文将深入探讨如何在Delphi环境下,利用ADO(ActiveX Data Objects)组件在多线程中安全地访问SQL数据库。标题“多线程ADO安全访问SQL”揭示了我们的讨论重点:在并发环境中,如何确保数据的一致性和完整性。 **多...
在这个"多线程互斥实例 多线程获取同一变量"的示例中,我们将探讨如何在多个线程中安全地访问共享资源,避免数据不一致性和竞态条件。 首先,我们需要理解多线程中的一些核心概念: 1. **线程**:线程是操作系统...
通过使用 `CreateMutex`, `ReleaseMutex` 和 `OpenMutex` 等函数,可以在多线程或多进程中实现对共享资源的独占访问。 以下是一个使用互斥对象实现线程同步的例子: ```pascal var MutexHandle: HANDLE; ...
Java多线程与线程安全实践Java多线程与线程安全实践Java多线程与线程安全实践Java多线程与线程安全实践Java多线程与线程安全实践Java多线程与线程安全实践Java多线程与线程安全实践Java多线程与线程安全实践Java多...
然而,当在多线程环境中使用SQLite时,需要注意一些关键问题以确保数据的安全性和一致性。以下是四个重要的考虑因素: 1. **线程安全**: SQLite本身并不提供完全的线程安全,这意味着在不同线程中并发访问数据库...
3. 使用HashTable:虽然HashTable是线程安全的,但由于其所有操作都是同步的,所以在多线程并发访问时,性能较低。因此,在现代Java开发中,通常更倾向于使用ConcurrentHashMap。 4. 避免在多线程环境中直接使用...
在多线程环境中,直接并发写入txt文件可能会导致数据交错,因为多个线程可能会同时写入,破坏日志的完整性。为了解决这个问题,开发者通常会引入同步机制,如使用`lock`关键字或者.NET提供的其他同步原语来确保每次...
3. **线程安全**:在多线程环境中,对SQLite的读写操作需要确保线程安全。否则,多个线程同时访问数据库可能导致数据损坏或不一致。C#中的`lock`关键字是一种同步机制,可以防止多个线程同时访问共享资源。 4. **...
在多线程编程中,线程间的通信是一个关键的议题,尤其当多个线程需要共享数据或协调工作时。全局变量作为一种简单的方式被用于实现线程间的通信,尤其是在MFC(Microsoft Foundation Classes)框架下。下面我们将...
### C# 在多线程中访问 Form 中控件的多种解决方案 #### 背景与问题阐述 在 Windows Forms 应用程序开发中,多线程技术被广泛应用于提高应用程序的响应性和性能。然而,在多线程环境中访问 UI 控件(如 `TextBox`...
本主题将深入探讨如何在C#中创建一个高效的线程安全日志类,用于在多线程环境中安全地写入txt日志。 首先,我们需要理解线程安全的概念。线程安全意味着当多个线程访问同一段代码时,该代码能正确处理并发操作,...
Java多线程与线程安全实践-基于Http协议的断点续传 Java多线程与线程安全实践-基于Http协议的断点续传 Java多线程与线程安全实践-基于Http协议的断点续传 Java多线程与线程安全实践-基于Http协议的断点续传 Java多...
线程安全意味着在多线程环境下,代码可以正确地运行而不会导致数据不一致或资源竞争。这通常需要使用同步机制,如临界区(CRITICAL_SECTION)、互斥量(mutex)、信号量(semaphore)或事件(event)来确保同一时刻...
在多线程环境中,事件处理通常在引发事件的线程上运行,因此,如果一个线程修改了UI控件的状态,而另一个线程尝试处理相关事件,可能会导致线程不安全。使用适当的同步机制可以解决这个问题。 "资源管理器"可能涉及...
然而,原生的`Dictionary, TValue>`在多线程环境下直接并发访问可能存在线程安全性问题。为了解决这个问题,.NET提供了一些线程安全的解决方案。 标题中的"多线程安全dictionary"指的是在多线程环境下能够确保数据...