@Override public Object blocker() { return getBlocker( this ); } }
private static boolean isThreadBlockedOn(Thread t, Object blocker) { return t.getState() == Thread.State.WAITING && LockSupport.getBlocker(t) == blocker; }
private boolean isBlocked() { return getState() == Thread.State.WAITING && LockSupport.getBlocker(this) == future; } }
private boolean isBlocked() { return getState() == Thread.State.TIMED_WAITING && LockSupport.getBlocker(this) == future; } }
@Override public Object getBlocker() { return LockSupport.getBlocker(thread); }
@Override public Object getBlocker() { return LockSupport.getBlocker(thread); }
@Override public void close() { shutdown = true; // this means blocked in sleepMillis() or sleepNanos() if (LockSupport.getBlocker(this) == cleanupSleepingHandle) this.interrupt(); // unblock }
void awaitWaiting() { while (LockSupport.getBlocker(this) != future) { if (getState() == State.TERMINATED) { throw new RuntimeException("Thread exited"); } Thread.yield(); } } }
void awaitWaiting() { while (LockSupport.getBlocker(this) != future) { if (getState() == State.TERMINATED) { throw new RuntimeException("Thread exited"); } Thread.yield(); } } }