diff --git a/core/java/android/os/AsyncTask.java b/core/java/android/os/AsyncTask.java index ce5f1633a8cd5..d4a30064707ee 100644 --- a/core/java/android/os/AsyncTask.java +++ b/core/java/android/os/AsyncTask.java @@ -177,8 +177,9 @@ import java.util.concurrent.atomic.AtomicInteger; public abstract class AsyncTask { private static final String LOG_TAG = "AsyncTask"; - private static final int CORE_POOL_SIZE = 5; - private static final int MAXIMUM_POOL_SIZE = 128; + private static final int CPU_COUNT = Runtime.getRuntime().availableProcessors(); + private static final int CORE_POOL_SIZE = CPU_COUNT + 1; + private static final int MAXIMUM_POOL_SIZE = CPU_COUNT * 2 + 1; private static final int KEEP_ALIVE = 1; private static final ThreadFactory sThreadFactory = new ThreadFactory() { @@ -190,7 +191,7 @@ public abstract class AsyncTask { }; private static final BlockingQueue sPoolWorkQueue = - new LinkedBlockingQueue(10); + new LinkedBlockingQueue(128); /** * An {@link Executor} that can be used to execute tasks in parallel.