如果我遇到类似以下情况:并发观察模式
ObserverA,ObserverB,ObserverC都从AbstractObserver继承。
创建观察员名单:
List<AbstractObserver> list = new ArrayList<AbstractObserver>();
list.add(new ObserverA());
list.add(new ObserverB());
list.add(new ObserverC());
而且某种以下方法处理程序运行在“主”线程:
public void eat(Food item) {
for(AbstractObserver o : list) {
o.eatFood(item);
}
}
public void drink(Coffee cup) {
for(AbstractObserver o : list) {
o.drinkCoffee(cup);
}
}
我将如何设计一个系统,我可以运行每一种食物和喝咖啡的方法在不同线程中的观察者?具体来说,当“MAIN”线程收到一个事件(喝或吃的方法被调用)时,我将如何在ObserverA,ObserverB和ObserverC中的自己的线程中运行eatFood或drinkCoffee方法?
我想为每个AbstractObserver子类实例设置不同的线程,因为目前我正在按顺序通知每个观察者,这可能会导致延迟。
我不明白这里的观察对象是如何起作用的。他们观察的主题是什么?它们与食品饮料和饮用咖啡方法有何关系? – Philipp
不,不适合我。从我的角度来看,我不知道什么时候吃喝(主线程方法)会被调用。他们可以被称为五分钟或更多。我只是希望每个AbstractObserver子类实例都能够在主线程的吃喝方法被调用时同时运行drinkCoffee或eatFood。 – sneeze1
您对并发有任何限制吗?例如,在之前的o.eatFood()结束之前,是否可以调用同一对象上的后续o.eatFood()? –