【发布时间】:2015-01-18 06:56:11
【问题描述】:
我有各种模型,我正在依次执行这些模型。我将有大约 200 个模型。
下面是我的代码,我在其中一个一个地执行这些模型
Map<String, List<ServerMetrics>> metricsHolder = new HashMap<String, List<ServerMetrics>>();
for (String alias : serverNames) {
List<ClientsModel> modelMetadata = getModelAttributes();
List<MachineInfo> machineInfo = getMachineInfo();
List<ServerMetrics> metricsList = new ArrayList<ServerMetrics>();
// calling model one by one sequentially
// is there any way to make this multithreaded?
// here modelMetadata size might be 100 or 200
for (ClientsModel modelList : modelMetadata) {
String modelValue = modelList.getModelValue();
String modelId = String.valueOf(modelList.getModelId());
// execute my model here and storing the metrics in the metricsList object
ServerMetrics metrics = TestUtils.executeModelMetrics(machineInfo, modelValue);
metrics.setModelId(modelId);
metricsList.add(metrics);
}
metricsHolder.put(alias, dynMetricsList);
}
问题陈述:-
有什么方法可以让模型执行多线程,然后将结果存储到metricsList 对象中?
【问题讨论】:
-
如果执行不是相互依赖的,您可以为每个执行生成一个新线程,然后存储结果。不能吗?
-
如果我有大约 200 个模型,那么你希望我生成 200 个线程吗?
标签: java multithreading thread-safety executorservice callable