void (Reader status, int iteration) { if (iteration > SPIN_TO_WAIT_FOR_LOCK) { status.state = Reader.State.READ_REQ; try { throwIfImpatient(status); LockSupport.parkNanos(this, 1_000_000); // unparked by writeUnlock } finally { status.state = Reader.State.CALM; } } else { Thread.yield(); } }