接口背景:使用parallelStream并行10次查询es,然后对时间字段进行格式处理,处理方法是DateUtil类中的一个静态方法parseToFormalStyle,使用的format以静态属性的方式存在于DateUtil中.
将并行流改成串行流后执行结果就都一致了.所以问题是出在了并行流上.而且差异只出现某个字段上,该字段所在类的其它属性并不变.所以问题一定是出在处理时间的方法上.
将并行流改成串行流时jmeter取样器里的Load time范围在1166到1179.使用StopWatch记录的running time范围在914292500 ns到979259300 ns.
并行流下尝试将format移入parseToFormalStyle方法中成为一个局部变量,问题也能得到解决.Load time范围在1094到1194.running time范围在828107900 ns到952882100 ns.
百度关键词"static变量 并发"发现下面这篇文章:
多线程访问static变量是否存在并发问题_知之者不如好之者,好之者不如乐之者-CSDN博客
但我使用的SimpleDateFormat是固定值,接着百度"static SimpleDateFormat 并发",发现这篇文章:
SimpleDateFormat高并发情况下报错问题_kris1122的博客-CSDN博客
问题得解.