I've only looked at the queue implementation, but both push and pop contain obvious race conditions; I would highly suggest adding tests that actually use the data structures from multiple threads.
I will also add disclaimers to the javadocs comments on methods just to reduce confusion.