09051914:对这个资产展示使用线程池的方法去做,第三次优化代码

master
冷调 2024-09-05 19:15:00 +08:00
parent 190ed47dac
commit 626f638d0c
1 changed files with 14 additions and 2 deletions

View File

@ -219,17 +219,29 @@ public class DataValueServiceImpl extends ServiceImpl<DataValueMapper, DataValue
}
}
// Collect all rows first
List<Map<Integer, Object>> rows = new ArrayList<>();
while (resultSet.next()) {
Map<Integer, Object> row = new HashMap<>();
for (int i = 1; i <= columnCount; i++) {
row.put(i, resultSet.getObject(i));
}
rows.add(row);
}
List<Future<DataValue>> futures = new ArrayList<>();
while (resultSet.next()) {
// Process each row in separate threads
for (Map<Integer, Object> row : rows) {
for (int i = 1; i <= columnCount; i++) {
final int index = i;
final Object value = row.get(index);
futures.add(executorService.submit(() -> {
String columnTypeName = metaData.getColumnTypeName(index);
return DataValue.builder()
.key(metaData.getColumnName(index))
.label(columnRemarks.getOrDefault(index, ""))
.value(resultSet.getObject(index, DataType.convertType(columnTypeName)))
.value(value)
.type(DataType.convertTypeString(columnTypeName))
.build();
}));