等待听众完成

时间:2013-09-10 03:13:26

标签: java concurrency

我将在这里谈论纯粹的概念。

我有一个附加了监听器的类,它有 某些东西 。 我有一整套从该类构造的对象

我还有一个静态方法foo()可以访问该数组,然后 其他

执行 其他内容 会触发听众,如果我不暂停 其他 ,直到 某事 已完成,代码无效。 foo()知道何时触发了侦听器。

此外,侦听器还能够直接调用由同一个类构造的另一个对象上的侦听器。 foo()无法知道是否会发生这种情况,或多少次。

那么我怎么能强制foo()等待监听器执行,然后,如果监听器没有触发连锁反应,继续它停止的地方,或者等待任何触发的监听器完成执行?

2 个答案:

答案 0 :(得分:1)

由于这是概念性的,并且很难确定答案,因此我建议您阅读LocksConditions http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/locks/Condition.html。这些可能会提供您正在寻找的能力。

答案 1 :(得分:0)

您可以考虑使用其他侦听器:

  • foo()可以将PropertyChangeListener添加到“侦听器”正在更改状态的任何位置,让我们称之为模型。
  • 然后拥有模型,通过在PropertyChangeSupport上触发其状态已更改的通知方法,在完成任务时通知foo。
  • 然后foo可以在完成动作后删除它的监听器。