private StackTraceElement[] execStackTrace(long timeout, TimeUnit unit) { if (!tryUnpark(null, timeout, unit)) return null; this.noPreempt = true; return execStackTrace1(); }
private FiberInfo execFiberInfo(long timeout, TimeUnit unit) { if (!tryUnpark(null, timeout, unit)) return null; final State s = this.state; this.noPreempt = true; final StackTraceElement[] st = execStackTrace1(); final Object blocker = getBlocker(); return makeFiberInfo(s, blocker, st); }
final boolean exec(Object blocker, long timeout, TimeUnit unit) { if (!scheduler.isCurrentThreadInScheduler()) return false; record(1, "Fiber", "exec", "Blocker %s attempting to immediately execute %s", blocker, this); if (!tryUnpark(blocker, timeout, unit)) { record(1, "Fiber", "exec", "Blocker %s attempt to immediately execute %s FAILED", blocker, this); return false; } immediateExecHelper(); return true; }