Interesting. A lot of care went into this. Thank you for sharing.
Is there a reason you chose not implement java.util.Queue?
Is there a reason you chose not implement java.util.Queue?
Look e.g. at the disclaimers at the size method of java.util.concurrent.ConcurrentLinkedQueue.