已用AtomicInteger实现Gatling自增Feeder,求Iterator.from实现方案
替代AtomicInteger的实现方案
当然可以用Iterator.from()配合map()来实现,这种写法更简洁且符合函数式风格,尤其适合单线程场景:
import java.util.UUID def getUUID: String = UUID.randomUUID().toString val itemAttemptForPost = Iterator.from(1).map { ordinal => Map( "usedId" -> getUUID, "ordinal" -> ordinal ) }
细节说明:
Iterator.from(1)会生成一个从1开始的无限递增整数序列,正好满足你从1开始计数的需求。- 每次迭代时,
map会将当前序号和新生成的UUID组合成目标Map,逻辑和你原代码完全一致。 - 单线程环境下,这种写法不需要原子类就能保证序号的顺序递增,没有额外的并发控制开销;如果是多线程场景,原
AtomicInteger的方案更适合保证原子性。
和原方案的对比:
- 原方案依赖
AtomicInteger的原子操作来保证多线程下的序号正确性,而Iterator方案天生是单线程安全的,写法更简洁。 - 两种方案都能生成无限数据流,满足惰性生成的特性。
内容的提问来源于stack exchange,提问作者Nimesh
相关产品推荐
相关产品推荐

