【发布时间】:2015-03-25 06:41:54
【问题描述】:
我正在负载测试工具中实现以下功能,以模拟目标应用程序的重负载:
同时启动多个线程来执行相同类型的操作。
每个线程将循环 n 次。在每个循环结束时,测试结果都可用并添加到一个列表中,该列表在所有循环完成运行后返回。
我目前正在使用Callable 和Future,并在所有线程完成运行后将所有线程返回的结果列表放入另一个列表并给我Future。问题是如果程序的执行被中断,我可能会丢失可用的东西。我希望能够在线程仍在处理剩余循环时保存完成循环中可用的结果。
Java 并发库中是否有适合此目的的东西?或者我正在构建的负载测试功能是否有更好的设计?
提前致谢!
【问题讨论】:
-
我建议在生成结果时将结果添加到并发队列(例如 ConcurrentLinkedQueue),并从队列中读取主线程。
-
谢谢。这与 BlockingQueue 有何不同?
标签: java concurrency