aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/tools/android/java/com/google/devtools/build/android/ExecutorServiceCloser.java
diff options
context:
space:
mode:
authorGravatar corysmith <corysmith@google.com>2017-08-23 15:24:31 +0200
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2017-08-23 15:46:23 +0200
commite516a101bb615f064d6622a5d4add541617b8c1f (patch)
tree93b6a3989b048a1cd35d9c1b37f411f77ec556bc /src/tools/android/java/com/google/devtools/build/android/ExecutorServiceCloser.java
parent296cb428546a7e966065b03137eca362efb9f34c (diff)
Adds compile action for aapt2: Aapt2ResourcePackagingAction
Adds a ManifestContainer interface to centralize the types that provide manifests. Adds PackagedResources to represent a linked dexless resource apk RELNOTES: None PiperOrigin-RevId: 166193049
Diffstat (limited to 'src/tools/android/java/com/google/devtools/build/android/ExecutorServiceCloser.java')
-rw-r--r--src/tools/android/java/com/google/devtools/build/android/ExecutorServiceCloser.java16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/tools/android/java/com/google/devtools/build/android/ExecutorServiceCloser.java b/src/tools/android/java/com/google/devtools/build/android/ExecutorServiceCloser.java
index 374c8a5db0..cc99342ddf 100644
--- a/src/tools/android/java/com/google/devtools/build/android/ExecutorServiceCloser.java
+++ b/src/tools/android/java/com/google/devtools/build/android/ExecutorServiceCloser.java
@@ -14,9 +14,11 @@
package com.google.devtools.build.android;
import com.google.common.util.concurrent.ListeningExecutorService;
+import com.google.common.util.concurrent.MoreExecutors;
import java.io.Closeable;
import java.io.IOException;
import java.util.List;
+import java.util.concurrent.Executors;
/** Shutdowns and verifies that no tasks are running in the executor service. */
final class ExecutorServiceCloser implements Closeable {
@@ -37,4 +39,18 @@ final class ExecutorServiceCloser implements Closeable {
public static Closeable createWith(ListeningExecutorService executorService) {
return new ExecutorServiceCloser(executorService);
}
+
+ /**
+ * Creates a {@link ListeningExecutorService} with a sane sized thread pool based on our current
+ * metrics.
+ */
+ public static ListeningExecutorService createDefaultService() {
+ // The reported availableProcessors may be higher than the actual resources
+ // (on a shared system). On the other hand, a lot of the work is I/O, so it's not completely
+ // CPU bound. As a compromise, divide by 2 the reported availableProcessors.
+ int numThreads = Math.max(1, Runtime.getRuntime().availableProcessors() / 2);
+ final ListeningExecutorService executorService =
+ MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(numThreads));
+ return executorService;
+ }
}