По сути, я хочу, чтобы BlockingQueue размера = 1. У меня есть поток «слушателя», который просто ждет, блокируя, пока объект не помещается в очередь, а затем извлекает его - и поток «производителя», который фактически помещает объект в очередь.
Я могу реализовать это с некоторыми синхронизированными блоками и реализацией BlockingQueue, но это кажется излишним. Есть ли лучший, более простой способ сделать то, что я хочу?
Пример интерфейса:
public interface Wait<T> {
/**
* If "put" has never been called on this object, then this method will
* block and wait until it has. Once "put" has been called with some T, this
* method will return that T immediately.
*/
public T get() throws InterruptedException;
/**
* @param object The object to return to callers of get(). If called more
* than once, will throw an {@link IllegalStateException}.
*/
public void put(T object);
}