java - 等待线程间realm-java中的数据更新

标签 java android multithreading realm

我在等待工作线程上的新数据时遇到问题。数据对象被复制到主线程上的 Realm ,但几乎在那之后我需要从工作线程访问该对象,然后工作线程报告现在 Realm 中不存在这样的对象(其新打开的 Realm 实例)。我记得有一个方法 load() 会阻止执行到下一个更新点,但它在新版本中被删除了。我不能为此使用更改通知,因为这不是 Looper 线程..

我现在能想到的唯一方法就是让线程 hibernate 一段神奇的时间,并向上帝祈祷它已经更新了,但恕我直言,这种方法非常不确定。

有人可以在这里提出建议,我如何确保我读取当时最新的数据?

最佳答案

一种可能的黑客行为是创建一个最终取消的交易。

realm.beginTransaction(); // blocks while there are other transactions
... // you always see the latest version of the Realm here
realm.cancelTransaction();

如果线程在 UI 线程将对象保存到 Realm 后启动,则此方法有效。

您还可以尝试此解决方法:https://stackoverflow.com/a/38839808/2413303 (尽管它对于等待并没有什么帮助)

关于java - 等待线程间realm-java中的数据更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40718426/

相关文章:

android - Android TV 中以太网 (RJ45) 和 USB 的广播接收器

Android MVP - RxJava 和改造 - 最佳方法

android - 如何在 Android 的 air 应用程序中运行 swf 文件

java - 为什么我的 java 长时间运行的线程(5k+ 线程)没有利用所有机器内核(12 核)?

java - Java 中的多线程是否需要花费很多时间来完成任务?

java - 具有运行任务数的 ExecutorService

java - 从字节数组创建列表

java - ThreadPoolExecutor中如何在线程间分配任务

java - 用于将 UTC 转换为 EST 的 JUnit 测试用例

java - 当 writeLock 锁定时,ReentrantReadWriteLock 是否会读取?