Use same thread pool size as AsyncTask#THREAD_POOL_EXECUTOR.

Test: Ran tests.
Change-Id: Ib48f22203ebfbf50e9c68d059e8c36a4237076a0
diff --git a/work/workmanager/src/main/java/androidx/work/impl/WorkManagerConfiguration.java b/work/workmanager/src/main/java/androidx/work/impl/WorkManagerConfiguration.java
index ebc3c95..65d3a78 100644
--- a/work/workmanager/src/main/java/androidx/work/impl/WorkManagerConfiguration.java
+++ b/work/workmanager/src/main/java/androidx/work/impl/WorkManagerConfiguration.java
@@ -126,7 +126,8 @@
 
     @VisibleForTesting
     static ExecutorService createExecutorService() {
-        // TODO(sumir): Poll availableProcessors periodically to update this value.
-        return Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors());
+        return Executors.newFixedThreadPool(
+                // This value is the same as the core pool size for AsyncTask#THREAD_POOL_EXECUTOR.
+                Math.max(2, Math.min(Runtime.getRuntime().availableProcessors() - 1, 4)));
     }
 }