what-the-bank/sources/com/google/firebase/crashlytics/internal/common/ExecutorUtils.java

109 lines
5.0 KiB
Java
Raw Permalink Normal View History

2024-07-27 18:17:47 +07:00
package com.google.firebase.crashlytics.internal.common;
import com.google.firebase.crashlytics.internal.Logger;
import java.util.Locale;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicLong;
/* loaded from: classes.dex */
public final class ExecutorUtils {
private static final long DEFAULT_TERMINATION_TIMEOUT = 2;
private ExecutorUtils() {
}
public static ExecutorService buildSingleThreadExecutorService(String str) {
ExecutorService newSingleThreadExecutor = Executors.newSingleThreadExecutor(getNamedThreadFactory(str));
addDelayedShutdownHook(str, newSingleThreadExecutor);
return newSingleThreadExecutor;
}
public static ScheduledExecutorService buildSingleThreadScheduledExecutorService(String str) {
ScheduledExecutorService newSingleThreadScheduledExecutor = Executors.newSingleThreadScheduledExecutor(getNamedThreadFactory(str));
addDelayedShutdownHook(str, newSingleThreadScheduledExecutor);
return newSingleThreadScheduledExecutor;
}
public static final ThreadFactory getNamedThreadFactory(String str) {
return new ThreadFactory(str, new AtomicLong(1L)) { // from class: com.google.firebase.crashlytics.internal.common.ExecutorUtils.1
final AtomicLong val$count;
final String val$threadNameTemplate;
{
this.val$threadNameTemplate = str;
this.val$count = r2;
}
@Override // java.util.concurrent.ThreadFactory
public Thread newThread(Runnable runnable) {
Thread newThread = Executors.defaultThreadFactory().newThread(new BackgroundPriorityRunnable(this, runnable) { // from class: com.google.firebase.crashlytics.internal.common.ExecutorUtils.1.1
final AnonymousClass1 this$0;
final Runnable val$runnable;
{
this.this$0 = this;
this.val$runnable = runnable;
}
@Override // com.google.firebase.crashlytics.internal.common.BackgroundPriorityRunnable
public void onRun() {
this.val$runnable.run();
}
});
StringBuilder sb = new StringBuilder();
sb.append(this.val$threadNameTemplate);
sb.append(this.val$count.getAndIncrement());
newThread.setName(sb.toString());
return newThread;
}
};
}
private static final void addDelayedShutdownHook(String str, ExecutorService executorService) {
addDelayedShutdownHook(str, executorService, DEFAULT_TERMINATION_TIMEOUT, TimeUnit.SECONDS);
}
public static final void addDelayedShutdownHook(String str, ExecutorService executorService, long j, TimeUnit timeUnit) {
Runtime.getRuntime().addShutdownHook(new Thread(new BackgroundPriorityRunnable(str, executorService, j, timeUnit) { // from class: com.google.firebase.crashlytics.internal.common.ExecutorUtils.2
final ExecutorService val$service;
final String val$serviceName;
final long val$terminationTimeout;
final TimeUnit val$timeUnit;
{
this.val$serviceName = str;
this.val$service = executorService;
this.val$terminationTimeout = j;
this.val$timeUnit = timeUnit;
}
@Override // com.google.firebase.crashlytics.internal.common.BackgroundPriorityRunnable
public void onRun() {
try {
Logger logger = Logger.getLogger();
StringBuilder sb = new StringBuilder("Executing shutdown hook for ");
sb.append(this.val$serviceName);
logger.d(sb.toString());
this.val$service.shutdown();
if (this.val$service.awaitTermination(this.val$terminationTimeout, this.val$timeUnit)) {
return;
}
Logger logger2 = Logger.getLogger();
StringBuilder sb2 = new StringBuilder();
sb2.append(this.val$serviceName);
sb2.append(" did not shut down in the allocated time. Requesting immediate shutdown.");
logger2.d(sb2.toString());
this.val$service.shutdownNow();
} catch (InterruptedException unused) {
Logger.getLogger().d(String.format(Locale.US, "Interrupted while waiting for %s to shut down. Requesting immediate shutdown.", this.val$serviceName));
this.val$service.shutdownNow();
}
}
}, "Crashlytics Shutdown Hook for ".concat(String.valueOf(str))));
}
}