Java синхронизирует элементы в двух коллекциях асинхронно, используя отдельную задачу - PullRequest
0 голосов
/ 06 февраля 2020

Мне нужен эффективный код, который мог бы синхронизировать элементы в двух коллекциях. Я имею в виду, что когда один элемент добавляется в первую коллекцию, он также должен добавляться во вторую коллекцию, но добавление элемента во вторую коллекцию должно выполняться асинхронно (например, с помощью отдельной задачи, которая будет вызываться циклически с помощью API-интерфейса задач планирования Spring Boot), чтобы обе коллекции содержит те же элементы.

Существует предположение, что существует только возможность добавления новых элементов

. Эти синхронизации должны быть эффективными, чтобы этот алгоритм мог работать в производственной среде. Синхронизация обоих списков должна занять до нескольких секунд

Не могли бы вы помочь?

Заранее спасибо

1 Ответ

0 голосов
/ 06 февраля 2020

Советую посмотреть в направлении синхронизации при чтении из второго сборника (в идеале при записи в первый, но, видимо, это невозможно).

Object get(Object key) {
    if (compareCollectionsBySize()) //it should be a simple, inexpensive operation
    {
        return duplicateCollection.get(key);
    } else {
        //we need synchronization
        //it all depends on the duration of the synchronization
        //and search costs for the original collection

        //in case fast synchronization
        synchronizeCollections();
        return duplicateCollection.get(key);
    }
}
...