JDK基础API对观察者模式提供了内建的支持。
在观察者模式中,被观察的对象继承java.util.Observer,观察者实现java.util.Observer接口。
首先观察者通过Observable.addObserver(Observer o)方法被添加到被观察对象的事件监听器列表中,然后当特定事件发生时调用Observable.notifyObservers(Object arg)方法来触发监听器逻辑,Observable会相应地调用每个观察者的Observer.update(Observable o, Object arg)方法,执行相应的逻辑。
在调用Observable.notifyObservers(Object arg)之前,必须先电泳Observable.setChanged()来将一个Observable中的实例状态变量changed设置为true,否则观察者的update方法不会被执行。
而Observable.notifyObservers(Object arg)之中,调用观察者逻辑之前,会调用clearChanged()方法将changed设置为false。这样的话,如果当时有并发的另外的线程调用notifyObservers方法,那么其事件处理逻辑就不会被执行。
我最后采取的解决方法是在子类中将Observer的clearChanged()方法覆盖为空实现,不再将changed设置为false。这样就不需要使用synchronize做同步,带来巨大的性能开销。
分享到:
相关推荐
JDK1.8中文文档 JDK1.8中文 jkd8中文文档 JDK中文版 标准的API规范文档,谷歌中文翻译 全翻译
JDK中文手册(JAVA),JDK API手册
下载后直接去本机jdk目录里替换jdk中的src.zip 再打开idea就能看到中文版的源码注释 示例 https://blog.csdn.net/a7459/article/details/106495622
JDK 1.8中文API文档
jdk中文文档,积分便宜你的不二选择, jdk中文文档,积分便宜你的不二选择, jdk中文文档,积分便宜你的不二选择
jdk8中文手册
jdk8中文API文档
jdk8帮助文档jdk8帮助文档jdk8帮助文档jdk8帮助文档jdk8帮助文档jdk8帮助文档jdk8帮助文档jdk8帮助文档jdk8帮助文档jdk8帮助文档jdk8帮助文档jdk8帮助文档jdk8帮助文档jdk8帮助文档jdk8帮助文档jdk8帮助文档jdk8帮助...
jdk8中文说明文档_CHM.zip jdk1.8文档 jdk1.8说明文档 官方直接翻译
jdk8中类-接口继承图,现在包括容器,IO流,部分Exception,HashMap
JDK11安装包,JDK11安装包JDK11安装包,JDK11安装包JDK11安装包,JDK11安装包JDK11安装包,JDK11安装包JDK11安装包,JDK11安装包JDK11安装包,JDK11安装包JDK11安装包,JDK11安装包JDK11安装包,JDK11安装包JDK11...
JAVA设计模式在JDK中的应用JAVA设计模式在JDK中的应用 各种设计模式在JDK当中使用的地方 方便分析源码
JDK6.0 中文文档JDK6.0 中文文档JDK6.0 中文文档JDK6.0 中文文档JDK6.0 中文文档JDK6.0 中文文档JDK6.0 中文文档
java api jdk 中文 java api jdk 中文
JDK1.8API中文文档,谷歌翻译版
jdk中文文档,java jdk中文帮助文档,
jdk api 1.8_中文文档 jdk api 1.8_中文文档 jdk api 1.8_中文文档
可导入开发环境,方便已义中文方式浏览jdk中的说明
主要是帮助基于jdk1.8版本开发的项目的中文帮助文档。
JDK API 1.8 中文 JDK API 1.8 中文 JDK API 1.8 中文 JDK API 1.8 中文 JDK API 1.8 中文 JDK API 1.8 中文 JDK API 1.8 中文 JDK API 1.8 中文 ...JDK API 1.8 中 JDK API 1.8 中文 JDK API 1.8 中文