package defpackage;

import java.util.concurrent.atomic.AtomicReference;
import java.util.concurrent.locks.AbstractOwnableSynchronizer;
import java.util.concurrent.locks.LockSupport;

/* JADX INFO: loaded from: classes2.dex */
@az3
@lw7
@ii2
abstract class ar4<T> extends AtomicReference<Runnable> implements Runnable {
    public static final Runnable a = new c();
    public static final Runnable b = new c();

    @tma
    public static final class b extends AbstractOwnableSynchronizer implements Runnable {
        public final ar4 a;

        public b(ar4 ar4Var) {
            this.a = ar4Var;
        }

        public static void a(b bVar, Thread thread) {
            bVar.setExclusiveOwnerThread(thread);
        }

        @Override // java.lang.Runnable
        public final void run() {
        }

        public final String toString() {
            return this.a.toString();
        }
    }

    public static final class c implements Runnable {
        @Override // java.lang.Runnable
        public final void run() {
        }
    }

    public abstract void a(Throwable th);

    public abstract void b(Object obj);

    public final void c() {
        Runnable runnable = b;
        Runnable runnable2 = a;
        Runnable runnable3 = get();
        if (runnable3 instanceof Thread) {
            b bVar = new b(this);
            b.a(bVar, Thread.currentThread());
            if (compareAndSet(runnable3, bVar)) {
                try {
                    ((Thread) runnable3).interrupt();
                } finally {
                    if (getAndSet(runnable2) == runnable) {
                        LockSupport.unpark((Thread) runnable3);
                    }
                }
            }
        }
    }

    public abstract boolean d();

    public abstract Object e();

    public abstract String f();

    public final void g(Thread thread) {
        Runnable runnable = get();
        b bVar = null;
        boolean z = false;
        int i = 0;
        while (true) {
            boolean z2 = runnable instanceof b;
            Runnable runnable2 = b;
            if (!z2 && runnable != runnable2) {
                break;
            }
            if (z2) {
                bVar = (b) runnable;
            }
            i++;
            if (i <= 1000) {
                Thread.yield();
            } else if (runnable == runnable2 || compareAndSet(runnable, runnable2)) {
                z = Thread.interrupted() || z;
                LockSupport.park(bVar);
            }
            runnable = get();
        }
        if (z) {
            thread.interrupt();
        }
    }

    @Override // java.lang.Runnable
    public final void run() {
        Thread threadCurrentThread = Thread.currentThread();
        Object objE = null;
        if (compareAndSet(null, threadCurrentThread)) {
            boolean zD = d();
            Runnable runnable = a;
            if (!zD) {
                try {
                    objE = e();
                } catch (Throwable th) {
                    try {
                        c87.a(th);
                        if (!compareAndSet(threadCurrentThread, runnable)) {
                            g(threadCurrentThread);
                        }
                        if (zD) {
                            return;
                        }
                        a(th);
                        return;
                    } finally {
                        if (!compareAndSet(threadCurrentThread, runnable)) {
                            g(threadCurrentThread);
                        }
                        if (!zD) {
                            b(null);
                        }
                    }
                }
            }
        }
    }

    @Override // java.util.concurrent.atomic.AtomicReference
    public final String toString() {
        String str;
        Runnable runnable = get();
        if (runnable == a) {
            str = "running=[DONE]";
        } else if (runnable instanceof b) {
            str = "running=[INTERRUPTED]";
        } else if (runnable instanceof Thread) {
            str = "running=[RUNNING ON " + ((Thread) runnable).getName() + "]";
        } else {
            str = "running=[NOT STARTED YET]";
        }
        StringBuilder sbL = fi7.l(str, ", ");
        sbL.append(f());
        return sbL.toString();
    }
}
