【发布时间】:2017-05-23 17:02:08
【问题描述】:
Conext:我有一个 junit 测试类,由 Maven 的故障安全集成测试插件运行,其中包含几个可以有效地无限并行化的测试。他们在已经部署的云平台上运行,作为建立推广的大门。这些测试中的每一个在开始时都会有一个快速的内存峰值,但随后的使用率非常低,它基本上会轮询直到一个操作完成。
我需要所有测试并行运行(因为它们将负载放在一个队列上,这会导致缩放操作使作业运行得更快),这在故障保护中很容易,但我还需要错开内存峰值开始,所以我不会耗尽内存。
我应该如何完成错开它们?当前的实现执行Thread.sleep(random),但仍有相当大的统计概率表明它们中有足够的重叠以耗尽内存。我应该在测试类中放置一个Semaphore 并在@Before 方法中等待它吗?这是我可以使用自定义 JUnit 跑步者更轻松地完成的事情吗?
【问题讨论】:
标签: java multithreading maven junit