Observable 的线程同步

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集合进行操作之前都要进行同步
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。