我有大量数据,需要对其进行一些优化。后台线程如下所示:
Realm realm;
try{
realm = Realm.getDefaultInstance();
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
//delete some data from table A according to algorithm
}
});
} finally {
if (realm != null) {
realm.close();
}
}
同时,如果用户决定删除整个表A,则可以在优化完成之前删除该表A,这将启动另一个后台线程,就像上面的删除整个表A的线程一样。
我想知道会发生什么,如果一项交易在另一项交易之前完成,我是否需要确保这些交易中只有一项在给定时间发生?
提前谢谢。...
答案 0 :(得分:1)
这是默认行为。一次只会发生一个事务。当您处于一个事务中时,它将被阻塞,并且没有其他线程可以执行其他事务。
基本上,您已处于事务中,因此无法启动多个事务。它将引发异常Check this Link。
答案 1 :(得分:0)
第一笔交易将导致第二笔交易被阻塞,直到第一笔交易被提交或取消。
写入事务阻塞了线程和进程。
答案 2 :(得分:0)
尝试使用 executeTransactionAsync 而不是 executeTransaction ,该过程将在后台线程中处理。不必担心交易结束,请为我们管理领域