Observable 的线程同步

2019-02-15  本文已影响0人  不过围城PK

package

java.util

class

Observer // 观察者
Observable // 被观察者

Observer 接口只有一个方法,当有被观察的对象发生变化的时候执行该方法:

void update(Observable o, Object arg);

Observable与Observer是一对多的关系,也很好理解,因为可以多个对象观察一个对象,例如多个学生观察老师,当老师问问题的时候,每个学生都会做出相应的反馈。
实际编程中,需要实现Observer接口,并扩展Observable来进行相应的操作。
需要注意的是要在Observable发生变化的时候执行setChanged(),才会通知Observer。
Observable保存了观察者的集合,在不同的线程中对Observable进行操作的时候,会导致通知Observer发生紊乱,例如某个Observer已经被删除了,但是因为没有进行同步,依然通知了该Observer。

 private Vector<Observer> obs;
  1. 使用线程安全的Vector保存Observer
  2. 在对Observer集合进行操作之前都要进行同步
上一篇 下一篇

猜你喜欢

热点阅读