Как Guava ListenableFuture <Object>может ожидать информацию из стека? - PullRequest
1 голос
/ 26 декабря 2011

У меня есть частный стек S, который заполнен объектами извне класса (с использованием методов). ListenableFuture должен прочитать стек и извлечь объект из него, но если стек пуст, он должен дождаться вставки объекта в стек и затем извлечь его. Я не уверен, как это реализовать.

Моя идея состояла в том, чтобы использовать Wait / Notify для ListenableFuture, но правильная ли это логика (работа с Guava)? Какие еще варианты у меня есть?

Спасибо заранее, Guy

1 Ответ

7 голосов
/ 26 декабря 2011

ListenableFuture и Guava вообще не вступают в это. Способ сделать это состоит в том, чтобы реализовать стек с LinkedBlockingDeque , иметь метод для добавления элементов в стек, используя addFirst, и использовать pollFirst (long, TimeUnit), чтобы ожидать указанное количество времени для объекта, чтобы вставь.

Никогда не используйте низкоуровневые инструменты параллелизма, такие как ожидание и уведомление, если вы можете выполнить ту же работу с поддержкой библиотеки.

...