Get rid of unnecessary synchronization. This is a contention point when we have lots of threads.

--
MOS_MIGRATED_REVID=101485204
diff --git a/src/main/java/com/google/devtools/build/lib/shell/Consumers.java b/src/main/java/com/google/devtools/build/lib/shell/Consumers.java
index 3ed5b7e..2e548f6 100644
--- a/src/main/java/com/google/devtools/build/lib/shell/Consumers.java
+++ b/src/main/java/com/google/devtools/build/lib/shell/Consumers.java
@@ -23,6 +23,7 @@
 import java.util.concurrent.Executors;
 import java.util.concurrent.Future;
 import java.util.concurrent.ThreadFactory;
+import java.util.concurrent.atomic.AtomicInteger;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
@@ -274,18 +275,14 @@
 
     private static final int THREAD_STACK_SIZE = 32 * 1024;
 
-    private static int threadInitNumber;
-
-    private static synchronized int nextThreadNum() {
-      return threadInitNumber++;
-    }
+    private static AtomicInteger threadInitNumber = new AtomicInteger(0);
 
     @Override
     public Thread newThread(final Runnable runnable) {
       final Thread t =
         new Thread(null,
                    runnable,
-                   "Command-Accumulator-Thread-" + nextThreadNum(),
+                   "Command-Accumulator-Thread-" + threadInitNumber.getAndIncrement(),
                    THREAD_STACK_SIZE);
       // Don't let this thread hold up JVM exit
       t.setDaemon(true);