Vor*_*t3x 9 java thread-safety observer-pattern
在java的Observer模式类Observer和Observable中,调用Observable对象的notifyObservers(Object arg0),在不同的线程中,线程安全吗?
示例:我有多个线程,所有Observable,将经常调用notifyObservers(...).所有这些线程都报告给一个Observer对象.
我是否会遇到并发问题,以及解决这个问题的更好方法是什么?我知道使用事件侦听器的可能解决方案.但是我不确定如何实现它,如果可能的话,我想坚持使用Observer模式实现.
从源代码(我有Java 5源代码,但对于Java 6和7应该是相同的),似乎你只有自己的同步Observable.
从notifyObservers(...)方法(in Observable):
synchronized (this) {
//the observers are notified in this block, with no additional synchronization
}
Run Code Online (Sandbox Code Playgroud)
因此,如果Observer不改变任何共享数据,它应该没问题.如果是这样 - 您可以update(Observable, Object)使用不同的Observables 进行多次调用- 您需要自己在该共享数据上添加同步.
| 归档时间: |
|
| 查看次数: |
6786 次 |
| 最近记录: |