One thing that I noticed when I was taking a class on Java is that the basic library lacks a queue data structure. Surely one of the most basic data structure has to be the double linked list. I took up the task of designing a queue for use with Java.
I wanted the design to be properly object-oriented. In Java, making multiple inheritance available requires the use of abstract interfaces. If one just implemented a queue using classes alone, then it cannot be multiple inherited at a later time.
In Java's standard class library, there are little interface usages. The name space is very compact and concise, however it is not possible to multiple inherit them properly in the object-oriented sense.
I have made all the queues' API reside in interfaces. Constructing alternative implementations such as unsynchronized queues should be easy. Lastly I have packaged them so you can run a demo, access the manual pages, or obtain the source codes.