From ef1fd6e4f56230967f24b492c30076224136b310 Mon Sep 17 00:00:00 2001 From: lingniu Date: Wed, 1 Jul 2026 06:40:48 +0800 Subject: [PATCH] perf: avoid global lock in jt808 mileage processor --- .../vehiclestat/jt808/Jt808MileageStreamProcessor.java | 2 +- .../jt808/Jt808MileageStreamProcessorTest.java | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/modules/services/vehicle-stat-service/src/main/java/com/lingniu/ingest/vehiclestat/jt808/Jt808MileageStreamProcessor.java b/modules/services/vehicle-stat-service/src/main/java/com/lingniu/ingest/vehiclestat/jt808/Jt808MileageStreamProcessor.java index 482005e2..d4683a1c 100644 --- a/modules/services/vehicle-stat-service/src/main/java/com/lingniu/ingest/vehiclestat/jt808/Jt808MileageStreamProcessor.java +++ b/modules/services/vehicle-stat-service/src/main/java/com/lingniu/ingest/vehiclestat/jt808/Jt808MileageStreamProcessor.java @@ -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); } diff --git a/modules/services/vehicle-stat-service/src/test/java/com/lingniu/ingest/vehiclestat/jt808/Jt808MileageStreamProcessorTest.java b/modules/services/vehicle-stat-service/src/test/java/com/lingniu/ingest/vehiclestat/jt808/Jt808MileageStreamProcessorTest.java index f9c3a5ea..fe972e7d 100644 --- a/modules/services/vehicle-stat-service/src/test/java/com/lingniu/ingest/vehiclestat/jt808/Jt808MileageStreamProcessorTest.java +++ b/modules/services/vehicle-stat-service/src/test/java/com/lingniu/ingest/vehiclestat/jt808/Jt808MileageStreamProcessorTest.java @@ -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(),