code: public V get(String key) {
  		try {
  			BlockingQueue<V> queue = retrieveSharedQueue(key);
  			V objToShare = queue.take();
  			if (!queue.offer(objToShare)) {
  				throw new RuntimeException("Error: Concurrent modification of the broker slot for key '" + key + "'.");
  			}
  			return objToShare;
  		} catch (InterruptedException e) {
  			throw new RuntimeException(e);
  		}
  	}
docs: Blocking retrieval and removal of the object to share.