Есть ли способ использовать параллельный поток с Realm? - PullRequest
0 голосов
/ 01 мая 2020

Я ищу способ использовать параллельные потоки со списком RealmResults. Проблема в том, что у Realm есть ограничение на использование RealmResults между потоками.

Это код, который я хотел бы использовать:

RealmResults<RealmModel> entitiesDAO = query.findAll();

final ModelMapper modelMapper = new ModelMapper();

final List<In> entities = entitiesDAO.stream().parallel().map(entityDAO -> {
     final In entity =  modelMapper.map(entityDAO, typeIn);
     return entity;
}).collect(toList());

//This code works perfectly without parallel streams:
/*final List<In> entities = entitiesDAO.stream().map(entityDAO -> {
    final In entity =  modelMapper.map(entityDAO, typeIn);
    return entity;
}).collect(toList());*/

1 Ответ

0 голосов
/ 01 мая 2020

Я нашел способ сделать это, вы должны использовать замороженные объекты.

Когда вы создаете свой объект Realm, вы должны сделать это так:

final Realm realm = Realm.getDefaultInstance().freeze();

Вы можете в документации по Царству: https://realm.io/docs/java/latest/ в разделе Замораживание объектов.

...