今天做并发测试发现,很多都报了这个错。
查交易记录发现,数据库存的交易开始和过期时间间隔有半小时,但是请求日志中时间是一致的。
问题原因:
在 发起交易请求时,使用了SimpleDateFormat类,该类不是线程安全的。
* <h4><a name="synchronization">Synchronization</a></h4>
*
* <p>
* 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.
*
结局方案:
每次format都新建一个对象。