我有一個匕首單例包裝處理我的基本領域請求。其中一個看起來像這樣:領域 - 實現異步隊列
public void insertOrUpdateAsync(final List<RealmMessage> messages, @Nullable final OnInsertListener listener) {
Realm instance = getRealmInstance();
instance.executeTransactionAsync(realm -> {
List<RealmMessage> newMessages = insertOrUpdateMessages(realm, messages);
},
() -> success(listener, instance),
error -> error(listener, error, instance));
}
private List<RealmMessage> insertOrUpdateMessages(@NonNull Realm realm, @NonNull final List<RealmMessage> messages) {
...
return realm.copyToRealmOrUpdate(unattendedMessages);
}
這很好。
但是有一個角落案例 - 長話短說 - 我多次啓動insertOrUpdateAsynch()。而一些要求後,我得到這個:
Caused by: java.util.concurrent.RejectedExecutionException: Task [email protected] rejected from [email protected][Running, pool size = 17, active threads = 17, queued tasks = 100, completed tasks = 81]
我的問題是:我應該如何處理這種不重建整個應用程序流。 我的想法是通過RxJava對傳入的請求進行排隊。我對嗎?我應該考慮哪些運營商並對自己進行教育?
還是我以完全錯誤的方式接近這個? 從我的大多數谷歌搜索中,我發現主要是這個問題是在啓動像我的循環方法。我沒有使用任何。在我的情況下,問題是這種方法是由多個響應啓動的,並且由於當前的後端實現而進行更改是不可能的。