package com.code44.finance.utils; import android.os.Process; import android.support.annotation.NonNull; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ThreadFactory; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; public class LocalExecutor extends ThreadPoolExecutor { public LocalExecutor(int maxThreads) { super(0, maxThreads, 30, TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>(), new LocalThreadFactory()); } private static class LocalThreadFactory implements ThreadFactory { @Override public Thread newThread(@NonNull Runnable runnable) { return new LocalThread(runnable); } } private static class LocalThread extends Thread { private LocalThread(Runnable runnable) { super(runnable); } @Override public void run() { Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND); super.run(); } } }