diff options
| author | 2023-08-09 19:21:26 +0000 | |
|---|---|---|
| committer | 2023-08-09 19:21:26 +0000 | |
| commit | cb3f39d6097f2197ac803dcf238235463cd01749 (patch) | |
| tree | 76f8f20850a10d63e0f47296f2106c22699727b6 | |
| parent | 8d28150946d30127fb049d666117e4e5fd721ac7 (diff) | |
| parent | 3d2d2fc46a96de23ff2cfdd9a7c8865de4111c16 (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.java | 28 |
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; + } + } } |