【问题标题】:Is java.util.Observable in Android thread-safe?Android 中的 java.util.Observable 是线程安全的吗?
【发布时间】:2011-02-25 21:51:26
【问题描述】:

Android 中的 java.util.Observable 是线程安全的吗? documentation 表示只有 deleteObserver() 和 deleteObservers() 是同步方法。 addObserver()、set/clear/hasChanged() 呢?我可以从不同的线程安全地调用 addObserver() 而不锁定 Observable 对象吗?

【问题讨论】:

  • javadoc 中的“同步”是如何出现的?这是一个实现细节!

标签: java android multithreading


【解决方案1】:

AFAIK,Android 基于 Apache Harmony。我在这里找到了 Harmony 的 Observable 实现的源代码:http://www.java2s.com/Open-Source/Java-Document/Apache-Harmony-Java-SE/java-package/java/util/Observable.java.htm

在我看来,他们试图使其成为线程安全的,但失败了:他们忘记同步 countObservers 方法以及 set/has/clearChanged 方法。

【讨论】:

  • 谢谢!我试图寻找代码,但不知道 Java Android 使用什么实现。
  • 在我的派生 Observable 中覆盖这些未同步的方法并将它们声明为同步的正确解决方案吗?如:@Override public synchronized boolean hasChanged() { return super.hasChanged(); }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-12
  • 2015-04-18
  • 2011-10-07
  • 2012-03-02
  • 2011-10-28
相关资源
最近更新 更多