Once you've consumed an element it is removed from the collection, so no other thread will be able to access it (at least through the collection).
That Cache looks more like a buffer to me. What does it add on top of the blocking collection anyway? It's weird that the cache would be able to consume its own elements.