public void await() throws InterruptedException { if (isSignaled()) return; if (waiting == null) waitingUpdater.compareAndSet(this, null, new WaitQueue()); WaitQueue.Signal s = waiting.register(); if (isSignaled()) s.cancel(); else s.await(); assert isSignaled(); }
public void await() throws InterruptedException { if (isSignaled()) return; if (waiting == null) waitingUpdater.compareAndSet(this, null, new WaitQueue()); WaitQueue.Signal s = waiting.register(); if (isSignaled()) s.cancel(); else s.await(); assert isSignaled(); }
public void await() throws InterruptedException { if (isSignaled()) return; if (waiting == null) waitingUpdater.compareAndSet(this, null, new WaitQueue()); WaitQueue.Signal s = waiting.register(); if (isSignaled()) s.cancel(); else s.await(); assert isSignaled(); }
public void await() throws InterruptedException { if (isSignaled()) return; if (waiting == null) waitingUpdater.compareAndSet(this, null, new WaitQueue()); WaitQueue.Signal s = waiting.register(); if (isSignaled()) s.cancel(); else s.await(); assert isSignaled(); }
public void await() throws InterruptedException { if (isSignaled()) return; if (waiting == null) waitingUpdater.compareAndSet(this, null, new WaitQueue()); WaitQueue.Signal s = waiting.register(); if (isSignaled()) s.cancel(); else s.await(); assert isSignaled(); }