summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Tim Murray <timmurray@google.com> 2023-08-09 19:21:26 +0000
committer Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> 2023-08-09 19:21:26 +0000
commitcb3f39d6097f2197ac803dcf238235463cd01749 (patch)
tree76f8f20850a10d63e0f47296f2106c22699727b6
parent8d28150946d30127fb049d666117e4e5fd721ac7 (diff)
parent3d2d2fc46a96de23ff2cfdd9a7c8865de4111c16 (diff)
Merge "SharedPreferences: replace per-load threads with single thread" into udc-qpr-dev am: 3d2d2fc46a
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/24297831 Change-Id: I2574837f0a7d91dd340a598f61929bedac180a47 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r--core/java/android/app/SharedPreferencesImpl.java28
1 files changed, 23 insertions, 5 deletions
diff --git a/core/java/android/app/SharedPreferencesImpl.java b/core/java/android/app/SharedPreferencesImpl.java
index 1ebf56550e03..a87187b8affb 100644
--- a/core/java/android/app/SharedPreferencesImpl.java
+++ b/core/java/android/app/SharedPreferencesImpl.java
@@ -55,6 +55,11 @@ import java.util.Map;
import java.util.Set;
import java.util.WeakHashMap;
import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.Executors;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.ThreadFactory;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
final class SharedPreferencesImpl implements SharedPreferences {
private static final String TAG = "SharedPreferencesImpl";
@@ -119,6 +124,10 @@ final class SharedPreferencesImpl implements SharedPreferences {
private final ExponentiallyBucketedHistogram mSyncTimes = new ExponentiallyBucketedHistogram(16);
private int mNumSync = 0;
+ private static final ThreadPoolExecutor sLoadExecutor = new ThreadPoolExecutor(0, 1, 10L,
+ TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>(),
+ new SharedPreferencesThreadFactory());
+
@UnsupportedAppUsage
SharedPreferencesImpl(File file, int mode) {
mFile = file;
@@ -135,11 +144,10 @@ final class SharedPreferencesImpl implements SharedPreferences {
synchronized (mLock) {
mLoaded = false;
}
- new Thread("SharedPreferencesImpl-load") {
- public void run() {
- loadFromDisk();
- }
- }.start();
+
+ sLoadExecutor.execute(() -> {
+ loadFromDisk();
+ });
}
private void loadFromDisk() {
@@ -874,4 +882,14 @@ final class SharedPreferencesImpl implements SharedPreferences {
}
mcr.setDiskWriteResult(false, false);
}
+
+
+ private static final class SharedPreferencesThreadFactory implements ThreadFactory {
+ @Override
+ public Thread newThread(Runnable runnable) {
+ Thread thread = Executors.defaultThreadFactory().newThread(runnable);
+ thread.setName("SharedPreferences");
+ return thread;
+ }
+ }
}