From 92de722b71b809556032d36dfb217aace5309c1c Mon Sep 17 00:00:00 2001 From: Jason Chiu Date: Fri, 27 Sep 2019 13:48:00 +0800 Subject: [PATCH] Make more threads in the executor for background tasks Let injected preferences load data simultaneously without being blocked by other ones. Bug: 141694556 Test: make RunSettingsLibRoboTests -j Change-Id: If10ef8c367492dcbd8aba66c1b01036fc79a8093 --- .../src/com/android/settingslib/utils/ThreadUtils.java | 9 +++++---- .../com/android/settingslib/utils/ThreadUtilsTest.java | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/packages/SettingsLib/src/com/android/settingslib/utils/ThreadUtils.java b/packages/SettingsLib/src/com/android/settingslib/utils/ThreadUtils.java index 5c9a06f91e6ad..4e052f1aeca4a 100644 --- a/packages/SettingsLib/src/com/android/settingslib/utils/ThreadUtils.java +++ b/packages/SettingsLib/src/com/android/settingslib/utils/ThreadUtils.java @@ -26,7 +26,7 @@ public class ThreadUtils { private static volatile Thread sMainThread; private static volatile Handler sMainThreadHandler; - private static volatile ExecutorService sSingleThreadExecutor; + private static volatile ExecutorService sThreadExecutor; /** * Returns true if the current thread is the UI thread. @@ -64,10 +64,11 @@ public class ThreadUtils { * @Return A future of the task that can be monitored for updates or cancelled. */ public static Future postOnBackgroundThread(Runnable runnable) { - if (sSingleThreadExecutor == null) { - sSingleThreadExecutor = Executors.newSingleThreadExecutor(); + if (sThreadExecutor == null) { + sThreadExecutor = Executors.newFixedThreadPool( + Runtime.getRuntime().availableProcessors()); } - return sSingleThreadExecutor.submit(runnable); + return sThreadExecutor.submit(runnable); } /** diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/utils/ThreadUtilsTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/utils/ThreadUtilsTest.java index 26db124c0041c..5114b00d2711f 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/utils/ThreadUtilsTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/utils/ThreadUtilsTest.java @@ -50,7 +50,7 @@ public class ThreadUtilsTest { } @Test - public void testPostOnMainThread_shouldRunOnMainTread() { + public void testPostOnMainThread_shouldRunOnMainThread() { TestRunnable cr = new TestRunnable(); ShadowLooper.pauseMainLooper(); ThreadUtils.postOnMainThread(cr);