Change AppSearchManagerService's thread pool to use LinkedBlockingQueue.

If the service reaches the max pool size which is the number of
available processor, we should use LinkedBlockingQueue instead of
SynchronousQueue to queue the requests.

Bug: 185294190
Test: presubmit
Change-Id: I3a9a2f8a149f44fac7ddc01d61a6d1827a8d55bf
This commit is contained in:
Terry Wang
2021-04-14 13:19:45 -07:00
parent 522de6d8df
commit ddf9718ead

View File

@@ -75,7 +75,7 @@ import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.concurrent.Executor;
import java.util.concurrent.SynchronousQueue;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
@@ -94,7 +94,7 @@ public class AppSearchManagerService extends SystemService {
// mutate requests will need to gain write lock and query requests need to gain read lock.
private static final Executor EXECUTOR = new ThreadPoolExecutor(/*corePoolSize=*/1,
Runtime.getRuntime().availableProcessors(), /*keepAliveTime*/ 60L, TimeUnit.SECONDS,
new SynchronousQueue<Runnable>());
new LinkedBlockingQueue<>());
// Cache of unlocked user ids so we don't have to query UserManager service each time. The
// "locked" suffix refers to the fact that access to the field should be locked; unrelated to