¿java BlockingQueue no tiene un vistazo de bloqueo?

Tengo una cola de bloqueo de objetos.

Quiero escribir un hilo que bloquee hasta que haya un objeto en la cola. Similar a la funcionalidad provista por BlockingQueue.take ().

Sin embargo, como no sé si podré procesar el objeto con éxito, solo quiero mirar () y no eliminar el objeto. Quiero eliminar el objeto solo si puedo procesarlo correctamente.

Por lo tanto, me gustaría una función de bloqueo peek (). Actualmente, peek () solo devuelve si la cola está vacía según javadocs.

¿Me estoy perdiendo de algo? ¿Hay otra manera de lograr esta funcionalidad?

EDITAR:

¿Alguna idea sobre si acabo de usar una cola segura de hilos y miré y dormí en su lugar?

public void run() {
    while (!exit) {
        while (queue.size() != 0) {
            Object o =  queue.peek();
            if (o != null) {
                if (consume(o) == true) {
                    queue.remove();
                } else {
                    Thread.sleep(10000); //need to backoff (60s) and try again
                }
            }
        }
        Thread.sleep(1000); //wait 1s for object on queue
    }
}

Tenga en cuenta que solo tengo un subproceso de consumidor y un subproceso de productor (separado). Supongo que esto no es tan eficiente como usar un BlockingQueue ... Cualquier comentario apreciado.