jimu-decompiled/sources/com/google/common/util/concurrent/CycleDetectingLockFactory.java
2025-05-13 19:24:51 +02:00

96 lines
3.6 KiB
Java

package com.google.common.util.concurrent;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Lists;
import com.google.common.collect.MapMaker;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.logging.Logger;
/* loaded from: classes.dex */
public class CycleDetectingLockFactory {
private static class ExampleStackTrace extends IllegalStateException {
static final StackTraceElement[] EMPTY_STACK_TRACE = new StackTraceElement[0];
static final ImmutableSet<String> EXCLUDED_CLASS_NAMES = ImmutableSet.of(CycleDetectingLockFactory.class.getName(), ExampleStackTrace.class.getName(), LockGraphNode.class.getName());
ExampleStackTrace(LockGraphNode lockGraphNode, LockGraphNode lockGraphNode2) {
super(lockGraphNode.a() + " -> " + lockGraphNode2.a());
StackTraceElement[] stackTrace = getStackTrace();
int length = stackTrace.length;
for (int i = 0; i < length; i++) {
if (WithExplicitOrdering.class.getName().equals(stackTrace[i].getClassName())) {
setStackTrace(EMPTY_STACK_TRACE);
return;
} else {
if (!EXCLUDED_CLASS_NAMES.contains(stackTrace[i].getClassName())) {
setStackTrace((StackTraceElement[]) Arrays.copyOfRange(stackTrace, i, length));
return;
}
}
}
}
}
private static class LockGraphNode {
final String a;
String a() {
return this.a;
}
}
public enum Policies implements Policy {
THROW { // from class: com.google.common.util.concurrent.CycleDetectingLockFactory.Policies.1
},
WARN { // from class: com.google.common.util.concurrent.CycleDetectingLockFactory.Policies.2
},
DISABLED { // from class: com.google.common.util.concurrent.CycleDetectingLockFactory.Policies.3
}
}
public interface Policy {
}
public static final class PotentialDeadlockException extends ExampleStackTrace {
private final ExampleStackTrace conflictingStackTrace;
public ExampleStackTrace getConflictingStackTrace() {
return this.conflictingStackTrace;
}
@Override // java.lang.Throwable
public String getMessage() {
StringBuilder sb = new StringBuilder(super.getMessage());
for (Throwable th = this.conflictingStackTrace; th != null; th = th.getCause()) {
sb.append(", ");
sb.append(th.getMessage());
}
return sb.toString();
}
private PotentialDeadlockException(LockGraphNode lockGraphNode, LockGraphNode lockGraphNode2, ExampleStackTrace exampleStackTrace) {
super(lockGraphNode, lockGraphNode2);
this.conflictingStackTrace = exampleStackTrace;
initCause(exampleStackTrace);
}
}
public static final class WithExplicitOrdering<E extends Enum<E>> extends CycleDetectingLockFactory {
}
static {
MapMaker mapMaker = new MapMaker();
mapMaker.g();
mapMaker.f();
Logger.getLogger(CycleDetectingLockFactory.class.getName());
new ThreadLocal<ArrayList<LockGraphNode>>() { // from class: com.google.common.util.concurrent.CycleDetectingLockFactory.1
/* JADX INFO: Access modifiers changed from: protected */
@Override // java.lang.ThreadLocal
public ArrayList<LockGraphNode> initialValue() {
return Lists.b(3);
}
};
}
}