1

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

我有一个类,它附有一个监听器,它做一些事情。我有一整套从该类构造的对象

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

其他事情会触发侦听器,如果我在完成某件事之前不暂停其他事情,代码就不起作用。foo()知道监听器何时被触发。

此外,侦听器具有直接调用由同一类构造的另一个对象上的侦听器的能力。foo()不知道这是否会发生,或者发生多少次。

那么如何强制foo()等待侦听器执行,然后,如果侦听器没有触发连锁反应,则从中断处继续,或者等待任何触发的侦听器完成执行?

4

2 回答 2

2

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

于 2013-09-10T03:21:07.273 回答
1

您可以考虑使用额外的监听器:

  • foo()可以将 PropertyChangeListener 添加到您的“侦听器”正在更改状态的任何内容中,我们将其称为模型。
  • 然后让模型在完成任务时通过在 PropertyChangeSupport 上触发通知方法通知 foo 其状态已更改。
  • 然后 foo 可以在完成其操作后删除其侦听器..
于 2013-09-10T03:24:30.027 回答