在Objective-C中,我使用Notification来完成一些任务,这需要一些时间来处理。我可以听通知,直到它准备好了...... 例如:
[[NSNotificationCenter defaultCenter] addObserver:objectB
selector:@selector(objectReceived:)
name:@"objectATasks"
object:nil];
[objectA doALongProcess];
当objectA完成任务时,将触发@“objectATasks”,并将调用objectB的objectReceived :.在java中有类似的东西/概念吗?感谢
答案 0 :(得分:3)
您可以在java
中使用Observer设计模式答案 1 :(得分:2)
似乎您正在使用观察者模式,当然您也可以在Java中实现它,看看here。
答案 2 :(得分:1)
最接近“stock”Java的是Future
,但这不允许你添加延续。您可能希望使用ListenableFuture
中的Guava界面及其addListener
方法。然后,您可以使用MoreExecutors
创建ListeningExecutorService
- 您向其提交任务,然后返回ListenableFuture
。
(使用它而不是滚动自己的Observer
模式实现的关键在于它已经以专门为这种用例设计的方式为您完成,对正在完成的任务做出反应 - 而不是各种其他类型的观察者实现,可能只是对属性变化等作出反应而不考虑线程安全性。为什么在聪明人已经为你完成它时设计自己的API?)