|
|
@ -92,22 +92,31 @@ public class DealDataJob { |
|
|
|
List<DeviceCodeParamEntity> deviceParamsByType = cacheUtil.getDeviceParamsByType(threadName); |
|
|
|
List<DeviceCodeParamEntity> deviceParamsByType = cacheUtil.getDeviceParamsByType(threadName); |
|
|
|
// 分组data_com
|
|
|
|
// 分组data_com
|
|
|
|
Map<String, List<DeviceCodeParamEntity>> dataComMap = deviceParamsByType.stream().collect(Collectors.groupingBy(DeviceCodeParamEntity::getDataCom)); |
|
|
|
Map<String, List<DeviceCodeParamEntity>> dataComMap = deviceParamsByType.stream().collect(Collectors.groupingBy(DeviceCodeParamEntity::getDataCom)); |
|
|
|
CountDownLatch countDownLatch = new CountDownLatch(dataComMap.size()); |
|
|
|
int batchSize = 10; // 定义一个批次大小
|
|
|
|
for (int j = 0; j < dataComMap.size(); j++) { |
|
|
|
for (int k = 0; k < dataComMap.size(); ) { |
|
|
|
if (Constant.WEB_FLAG) { |
|
|
|
CountDownLatch countDownLatch = new CountDownLatch(Math.min(batchSize, dataComMap.size() - k)); |
|
|
|
|
|
|
|
for (int j = 0; j < Math.min(batchSize, dataComMap.size() - k); j++) { |
|
|
|
|
|
|
|
if (Constant.WEB_FLAG) { |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
// 获取data_com口
|
|
|
|
|
|
|
|
String dataCom = dataComMap.keySet().toArray(new String[0])[j]; |
|
|
|
|
|
|
|
SerialPortThread myThread = new SerialPortThread(); |
|
|
|
|
|
|
|
myThread.setName(threadName, dataCom.toLowerCase().replace("com", ""), countDownLatch); |
|
|
|
|
|
|
|
Thread thread = new Thread(myThread); |
|
|
|
|
|
|
|
comThreadPool.execute(thread); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
// 等待执行完成
|
|
|
|
|
|
|
|
countDownLatch.await(); |
|
|
|
|
|
|
|
// 释放资源
|
|
|
|
|
|
|
|
countDownLatch = null; |
|
|
|
|
|
|
|
// 检查是否需要继续创建新的线程(未达到数据总数量且WEB_FLAG为false)
|
|
|
|
|
|
|
|
if (k + batchSize < dataComMap.size() && !Constant.WEB_FLAG) { |
|
|
|
|
|
|
|
k += batchSize; |
|
|
|
|
|
|
|
} else { |
|
|
|
break; |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
// 获取data_com口
|
|
|
|
|
|
|
|
String dataCom = dataComMap.keySet().toArray(new String[0])[j]; |
|
|
|
|
|
|
|
SerialPortThread myThread = new SerialPortThread(); |
|
|
|
|
|
|
|
myThread.setName(threadName, dataCom.toLowerCase().replace("com", ""), countDownLatch); |
|
|
|
|
|
|
|
Thread thread = new Thread(myThread); |
|
|
|
|
|
|
|
comThreadPool.execute(thread); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
// 等待执行完成
|
|
|
|
|
|
|
|
countDownLatch.await(); |
|
|
|
|
|
|
|
// 释放资源
|
|
|
|
|
|
|
|
countDownLatch = null; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|