code: public int remainingCapacity() {
          final ReentrantLock lock = this.lock;
          lock.lock();
          try {
              return items.length - count;
          } finally {
              lock.unlock();
          }
      }
docs: Returns the number of additional elements that this queue can ideally
  (in the absence of memory or resource constraints) accept without
  blocking. This is always equal to the initial capacity of this queue
  less the current {@code size} of this queue.
  
  <p>Note that you <em>cannot</em> always tell if an attempt to insert
  an element will succeed by inspecting {@code remainingCapacity}
  because it may be the case that another thread is about to
  insert or remove an element.