discord-jadx/app/src/main/java/androidx/arch/core/executor/DefaultTaskExecutor.java

72 lines
2.7 KiB
Java

package androidx.arch.core.executor;
import android.os.Build;
import android.os.Handler;
import android.os.Looper;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RestrictTo;
import java.lang.reflect.InvocationTargetException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.atomic.AtomicInteger;
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP_PREFIX})
public class DefaultTaskExecutor extends TaskExecutor {
private final ExecutorService mDiskIO = Executors.newFixedThreadPool(4, new AnonymousClass1());
private final Object mLock = new Object();
@Nullable
private volatile Handler mMainHandler;
/* renamed from: androidx.arch.core.executor.DefaultTaskExecutor$1 reason: invalid class name */
public class AnonymousClass1 implements ThreadFactory {
private static final String THREAD_NAME_STEM = "arch_disk_io_%d";
private final AtomicInteger mThreadId = new AtomicInteger(0);
public AnonymousClass1() {
}
@Override // java.util.concurrent.ThreadFactory
public Thread newThread(Runnable runnable) {
Thread thread = new Thread(runnable);
thread.setName(String.format(THREAD_NAME_STEM, Integer.valueOf(this.mThreadId.getAndIncrement())));
return thread;
}
}
private static Handler createAsync(@NonNull Looper looper) {
if (Build.VERSION.SDK_INT >= 28) {
return Handler.createAsync(looper);
}
try {
return (Handler) Handler.class.getDeclaredConstructor(Looper.class, Handler.Callback.class, Boolean.TYPE).newInstance(looper, null, Boolean.TRUE);
} catch (IllegalAccessException | InstantiationException | NoSuchMethodException unused) {
return new Handler(looper);
} catch (InvocationTargetException unused2) {
return new Handler(looper);
}
}
@Override // androidx.arch.core.executor.TaskExecutor
public void executeOnDiskIO(Runnable runnable) {
this.mDiskIO.execute(runnable);
}
@Override // androidx.arch.core.executor.TaskExecutor
public boolean isMainThread() {
return Looper.getMainLooper().getThread() == Thread.currentThread();
}
@Override // androidx.arch.core.executor.TaskExecutor
public void postToMainThread(Runnable runnable) {
if (this.mMainHandler == null) {
synchronized (this.mLock) {
if (this.mMainHandler == null) {
this.mMainHandler = createAsync(Looper.getMainLooper());
}
}
}
this.mMainHandler.post(runnable);
}
}