diff options
author | corysmith <corysmith@google.com> | 2017-08-23 15:24:31 +0200 |
---|---|---|
committer | Damien Martin-Guillerez <dmarting@google.com> | 2017-08-23 15:46:23 +0200 |
commit | e516a101bb615f064d6622a5d4add541617b8c1f (patch) | |
tree | 93b6a3989b048a1cd35d9c1b37f411f77ec556bc /src/tools/android/java/com/google/devtools/build/android/ExecutorServiceCloser.java | |
parent | 296cb428546a7e966065b03137eca362efb9f34c (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.java | 16 |
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; + } } |