对电池电压新增单线程执行

onereq
liuguijing 3 months ago
parent 49b614b7b9
commit 9c2346befd

@ -52,6 +52,10 @@ import java.text.SimpleDateFormat;
import java.util.Arrays; import java.util.Arrays;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
import java.util.concurrent.atomic.AtomicInteger;; import java.util.concurrent.atomic.AtomicInteger;;
@ -144,6 +148,29 @@ public class MpMasterService extends Service {
private String mIccid1 = null; private String mIccid1 = null;
private String mIccid2 = null; private String mIccid2 = null;
//用于创建单例线程保证该线程在项目中唯一
private static final AtomicBoolean created = new AtomicBoolean(false);
// private static Thread batteryVoltageThread;
// public static Thread getInstance(Runnable runnable) {
// if (!created.getAndSet(true)) {
// batteryVoltageThread = new Thread(runnable);
// batteryVoltageThread.start();
// }
// return batteryVoltageThread;
// }
private static ExecutorService batteryVoltageThread;
public static synchronized ExecutorService getSingleThreadExecutor() {
if (batteryVoltageThread == null || batteryVoltageThread.isShutdown()) {
batteryVoltageThread = Executors.newSingleThreadExecutor();
}
return batteryVoltageThread;
}
AtomicInteger reqCode = new AtomicInteger(0); AtomicInteger reqCode = new AtomicInteger(0);
public MpMasterService() { public MpMasterService() {
@ -1087,14 +1114,28 @@ public class MpMasterService extends Service {
} }
private void buildChargingBatteryVoltage(long ts) { private void buildChargingBatteryVoltage(long ts) {
if (batteryVoltageThread != null && !batteryVoltageThread.isShutdown()) {
logger.info("电压线程在执行退出");
return;
}
getSingleThreadExecutor().execute(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
logger.info("电压线程编号" + batteryVoltageThread.hashCode());
int val = 0; int val = 0;
for (int idx = 0; idx < 3; idx++) { for (int idx = 0; idx < 3; idx++) {
logger.info("电压测试第" + idx + "次开始读取");
val = MpMasterService.getInt(112); val = MpMasterService.getInt(112);
logger.info("电压测试第" + idx + "次读取结束 " + val);
if (val > 0) { if (val > 0) {
break; break;
} }
} }
if (val > 0) { if (val > 0) {
if (val > mMaxBCV) { if (val > mMaxBCV) {
mMaxBCV = val; mMaxBCV = val;
@ -1102,6 +1143,9 @@ public class MpMasterService extends Service {
} }
} }
} }
});
}
public String getAndResetMaxBCV() { public String getAndResetMaxBCV() {
String val = Integer.toString(mMaxBCV / 1000) + "." + Integer.toString((mMaxBCV % 1000) / 100) String val = Integer.toString(mMaxBCV / 1000) + "." + Integer.toString((mMaxBCV % 1000) / 100)

Loading…
Cancel
Save