【发布时间】:2021-06-27 23:26:55
【问题描述】:
在这种情况下同步线程的最佳方法是什么:
fun doSomething() {
readFromDB.subscribe(object : DisposableMaybeObserver<List<Trip>>()) {
override onSuccess() {
callback.complete()
}
override onFailure() {
callback.complete()
}
}
}
两个线程访问此块并遇到竞争条件。 我只需要一个线程从 DB 中读取并保持该状态,直到回调完成。 如何锁定其他线程不执行此块。
尝试使用锁/同步。但是,如何从onSuccess 或onFailure 中解锁。不能解决问题。
换句话说,如何等待线程从 DB 读取并返回 onSuccess / onFailure,以便第二个线程执行相同操作。
【问题讨论】:
-
2 个线程共享
callback实例,对吧? -
在这种情况下,您不必同步线程,它是应该同步的第 4 个数据库方法。
-
@dung ya van:回调实例是共享的。
-
@ADM :需要对来自数据库的结果进行一些处理,并且在第一个线程完全完成处理之前,第二个线程不应访问 doSomething()。跨度>
标签: android multithreading kotlin rx-java