perf: avoid global lock in jt808 mileage processor

This commit is contained in:
lingniu
2026-07-01 06:40:48 +08:00
parent 7c3f25eaf6
commit ef1fd6e4f5
2 changed files with 11 additions and 1 deletions

View File

@@ -21,7 +21,7 @@ public final class Jt808MileageStreamProcessor {
this.zoneId = zoneId;
}
public synchronized void process(VehicleEnvelope envelope) {
public void process(VehicleEnvelope envelope) {
extractor.extract(envelope).ifPresent(this::processPoint);
}

View File

@@ -8,6 +8,7 @@ import com.lingniu.ingest.vehiclestat.VehicleDailyStatResult;
import com.lingniu.ingest.vehiclestat.VehicleStatRepository;
import org.junit.jupiter.api.Test;
import java.lang.reflect.Modifier;
import java.time.Instant;
import java.time.LocalDate;
import java.time.ZoneId;
@@ -63,6 +64,15 @@ class Jt808MileageStreamProcessorTest {
assertThat(repository.results).isEmpty();
}
@Test
void processDoesNotSerializeAllVehicleMileageUpdatesBehindOneMonitor() throws NoSuchMethodException {
int modifiers = Jt808MileageStreamProcessor.class
.getDeclaredMethod("process", VehicleEnvelope.class)
.getModifiers();
assertThat(Modifier.isSynchronized(modifiers)).isFalse();
}
private static Jt808MileageStreamProcessor processor(VehicleStatRepository repository) {
return new Jt808MileageStreamProcessor(
new Jt808LocationPointExtractor(),