Use a ForkJoinPool instead of a ThreadPoolExecutor for the globbing. This makes
the multi-thread more efficient, especially when --legacy_globbing_threads is
dialed up on slow file systems.

RELNOTES: None.
PiperOrigin-RevId: 235318679
diff --git a/src/main/java/com/google/devtools/build/lib/packages/GlobCache.java b/src/main/java/com/google/devtools/build/lib/packages/GlobCache.java
index a968c4e..3e3c1af 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/GlobCache.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/GlobCache.java
@@ -35,8 +35,8 @@
 import java.util.Set;
 import java.util.concurrent.CancellationException;
 import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Executor;
 import java.util.concurrent.Future;
-import java.util.concurrent.ThreadPoolExecutor;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicReference;
 
@@ -76,10 +76,9 @@
   private AtomicReference<? extends UnixGlob.FilesystemCalls> syscalls;
   private final int maxDirectoriesToEagerlyVisit;
 
-  /**
-   * The thread pool for glob evaluation.
-   */
-  private final ThreadPoolExecutor globExecutor;
+  /** The thread pool for glob evaluation. */
+  private final Executor globExecutor;
+
   private final AtomicBoolean globalStarted = new AtomicBoolean(false);
 
   /**
@@ -98,7 +97,7 @@
       final PackageIdentifier packageId,
       final CachingPackageLocator locator,
       AtomicReference<? extends UnixGlob.FilesystemCalls> syscalls,
-      ThreadPoolExecutor globExecutor,
+      Executor globExecutor,
       int maxDirectoriesToEagerlyVisit) {
     this.packageDirectory = Preconditions.checkNotNull(packageDirectory);
     this.packageId = Preconditions.checkNotNull(packageId);
@@ -206,7 +205,7 @@
         .addPattern(pattern)
         .setExcludeDirectories(excludeDirs)
         .setDirectoryFilter(childDirectoryPredicate)
-        .setThreadPool(globExecutor)
+        .setExecutor(globExecutor)
         .setFilesystemCalls(syscalls)
         .globAsync();
   }