Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a76bc763 authored by Sunny Goyal's avatar Sunny Goyal
Browse files

Removing number of threads used in background execution

to prevent system thrashing

Bug: 188541475
Test: Presubmit
Change-Id: Iff73abeab813d1b80a1ff85b69723dce0bef8005
parent 5bb515b6
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -16,7 +16,6 @@
package com.android.quickstep;

import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
import static com.android.launcher3.util.Executors.THREAD_POOL_EXECUTOR;
import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR;

import android.view.SurfaceControl;
@@ -102,7 +101,7 @@ public class RecentsAnimationController {
     */
    @UiThread
    public void removeTaskTarget(@NonNull RemoteAnimationTargetCompat target) {
        THREAD_POOL_EXECUTOR.execute(() -> mController.removeTask(target.taskId));
        UI_HELPER_EXECUTOR.execute(() -> mController.removeTask(target.taskId));
    }

    @UiThread
+2 −2
Original line number Diff line number Diff line
@@ -15,7 +15,7 @@
 */
package com.android.launcher3.model;

import static com.android.launcher3.util.Executors.createAndStartNewForegroundLooper;
import static com.android.launcher3.util.Executors.createAndStartNewLooper;
import static com.android.launcher3.util.LauncherModelHelper.TEST_PACKAGE;

import static org.junit.Assert.assertEquals;
@@ -74,7 +74,7 @@ public class ModelMultiCallbacksTest {

        // Since robolectric tests run on main thread, we run the loader-UI calls on a temp thread,
        // so that we can wait appropriately for the loader to complete.
        mTempMainExecutor = new LooperExecutor(createAndStartNewForegroundLooper("tempMain"));
        mTempMainExecutor = new LooperExecutor(createAndStartNewLooper("tempMain"));
        ShadowLooperExecutor sle = Shadow.extract(Executors.MAIN_EXECUTOR);
        sle.setHandler(mTempMainExecutor.getHandler());
    }
+5 −16
Original line number Diff line number Diff line
@@ -30,18 +30,15 @@ import java.util.concurrent.atomic.AtomicInteger;
 */
public class Executors {

    // These values are same as that in {@link AsyncTask}.
    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 POOL_SIZE =
            Math.max(Runtime.getRuntime().availableProcessors(), 2);
    private static final int KEEP_ALIVE = 1;

    /**
     * An {@link ThreadPoolExecutor} to be used with async task with no limit on the queue size.
     */
    public static final ThreadPoolExecutor THREAD_POOL_EXECUTOR = new ThreadPoolExecutor(
            CORE_POOL_SIZE, MAXIMUM_POOL_SIZE, KEEP_ALIVE,
            TimeUnit.SECONDS, new LinkedBlockingQueue<>());
            POOL_SIZE, POOL_SIZE, KEEP_ALIVE, TimeUnit.SECONDS, new LinkedBlockingQueue<>());

    /**
     * Returns the executor for running tasks on the main thread.
@@ -53,7 +50,8 @@ public class Executors {
     * A background executor for using time sensitive actions where user is waiting for response.
     */
    public static final LooperExecutor UI_HELPER_EXECUTOR =
            new LooperExecutor(createAndStartNewForegroundLooper("UiThreadHelper"));
            new LooperExecutor(
                    createAndStartNewLooper("UiThreadHelper", Process.THREAD_PRIORITY_FOREGROUND));

    /**
     * Utility method to get a started handler thread statically
@@ -71,15 +69,6 @@ public class Executors {
        return thread.getLooper();
    }

    /**
     * Similar to {@link #createAndStartNewLooper(String)}, but starts the thread with
     * foreground priority.
     * Think before using
     */
    public static Looper createAndStartNewForegroundLooper(String name) {
        return createAndStartNewLooper(name, Process.THREAD_PRIORITY_FOREGROUND);
    }

    /**
     * Executor used for running Launcher model related tasks (eg loading icons or updated db)
     */