From 96627113f71258acd55e96108623e75eb2076fbc Mon Sep 17 00:00:00 2001
From: Vojtech Moravec <vojtech.moravec.st@vsb.cz>
Date: Mon, 5 Oct 2020 13:55:23 +0200
Subject: [PATCH] Replace synchronized methods with AtomicInteger fields.

---
 src/main/java/bdv/server/CellHandler.java | 23 +++++++----------------
 1 file changed, 7 insertions(+), 16 deletions(-)

diff --git a/src/main/java/bdv/server/CellHandler.java b/src/main/java/bdv/server/CellHandler.java
index f76254a..81bc339 100644
--- a/src/main/java/bdv/server/CellHandler.java
+++ b/src/main/java/bdv/server/CellHandler.java
@@ -51,6 +51,7 @@ import java.util.Comparator;
 import java.util.HashMap;
 import java.util.Stack;
 import java.util.concurrent.ExecutionException;
+import java.util.concurrent.atomic.AtomicInteger;
 
 public class CellHandler extends ContextHandler {
     private static final org.eclipse.jetty.util.log.Logger LOG = Log.getLogger(CellHandler.class);
@@ -163,19 +164,9 @@ public class CellHandler extends ContextHandler {
 
     private Stack<MemoryOutputStream> cachedBuffers = null;
     private final int INITIAL_BUFFER_SIZE = 2048;
-    private long accumulation = 0;
-    private long uncompressedAccumulation = 0;
 
-
-    private synchronized long addToAccumulation(final int value) {
-        accumulation += value;
-        return accumulation;
-    }
-
-    private synchronized long addToUncompressedAccumulation(final int value) {
-        uncompressedAccumulation += value;
-        return uncompressedAccumulation;
-    }
+    private final AtomicInteger compressedAccumulation = new AtomicInteger(0);
+    private final AtomicInteger uncompressedAccumulation = new AtomicInteger(0);
 
 
     public CellHandler(final String baseUrl,
@@ -386,8 +377,8 @@ public class CellHandler extends ContextHandler {
             returnBufferForReuse(cellCompressionStream);
             stopwatch.stop();
 
-            final long currentlySent = addToAccumulation(compressedContentLength);
-            final long uncompressedWouldSent = addToUncompressedAccumulation(data.length * 2);
+            final long currentlySent = compressedAccumulation.addAndGet(compressedContentLength);
+            final long uncompressedWouldSent = uncompressedAccumulation.addAndGet(data.length * 2);
 
             if (compressionParams.isVerbose()) {
 
@@ -409,8 +400,8 @@ public class CellHandler extends ContextHandler {
     }
 
     private void respondWithCompressionSummary(final Request baseRequest, final HttpServletResponse response) throws IOException {
-        final long currentlySent = addToAccumulation(0);
-        final long uncompressedWouldSent = addToUncompressedAccumulation(0);
+        final long currentlySent = compressedAccumulation.get();
+        final long uncompressedWouldSent = uncompressedAccumulation.get();
 
         final double sentKB = ((double) currentlySent / 1000.0);
         final double sentMB = ((double) currentlySent / 1000.0) / 1000.0;
-- 
GitLab