【发布时间】:2016-07-23 23:37:41
【问题描述】:
我想编写一个对我的 API 执行许多并行调用的测试。
ExecutorService executor = Executors.newCachedThreadPool();
final int numOfUsers = 10;
for (int i = 0; i < numOfUsers; i++) {
executor.execute(() -> {
final Device device1 = getFirstDevice();
final ResponseDto responseDto = devicesServiceLocal.acquireDevice(device1.uuid, 4738);
if (responseDto.status == Status.SUCCESS)
{
successCount.incrementAndGet();
}
});
}
我知道我可以使用 executorThreadsPool 做到这一点,如下所示:
devicesList.parallelStream()
.map(device -> do something)
我可以用 java8 并行流创建它:
我怎样才能在一台设备上做到这一点?
意思是我想要几个电话来获取相同的设备。
类似这样的:
{{device}}.parallelStream().execute(myAction).times(10)
【问题讨论】:
-
您不需要为所有事情都使用流。请注意您的代码的替代方案:
Collections.<Runnable>nCopies(numOfUsers, ()->{/* your code */}).forEach(executor::execute);或类似的构造......
标签: java multithreading parallel-processing java-8 java-stream