我有一个私有的Stack S,它填充了类的外部对象(使用方法)。 一个ListenableFuture应该读取堆栈并从中检索一个对象, 但如果堆栈为空,它应该等待一个对象插入堆栈然后检索它。我不确定如何实现这一点。
我的想法是对ListenableFuture使用Wait / Notify,但这是正确的逻辑(与Guava一起工作)? 我还有其他选择吗?
提前致谢, 盖
答案 0 :(得分:7)
ListenableFuture和Guava根本没有进入这个领域。执行此操作的方法是使用LinkedBlockingDeque实现堆栈,使用addFirst添加元素到堆栈的方法,并使用pollFirst(long,TimeUnit)等待指定的时间来插入对象
如果您可以使用库支持执行相同的工作,请不要使用等级和通知等低级并发工具。