code: public synchronized Object get() {
          Object o = null;
  
          while ((o = tryGet()) == null) {
              try {
                  this.wait();
              } catch (final InterruptedException e) {
              }
          }
          return o;
      }
docs: Retrieve an object from the head of the queue, or block until one
  arrives.
  
  @return The object at the head of the queue.