Как решить проблему производителя и потребителя в Android

У меня есть метод обратного вызова в моем классе обслуживания, который будет вызываться каждую секунду со списком данных, и он непрерывно записывается в JSONArray, как показано ниже.

Этот метод onDataCapturemethod() вызывается каждую секунду. Так что этот метод будет вызываться 60 раз в минуту и ​​так далее.

private void onDataCapture(List<DataModel> model){
    myJsonArray.put(model);
}

Также у меня есть другой метод планировщика, который будет вызываться один раз каждые 15 секунд. Это возьмет данные из myJsonArray и отправит их на сервер. Затем он очистит массив. Так что этот метод будет вызываться 4 раза в минуту и ​​так далее.

private void storeDataToBackend(){
    for (int i = 0; i < myJsonArray.length(); i++) {
            tempJson.put(myJsonArray.get(i));
    }
    .....
    myJsonArray = new new JSONArray(); // Clearing after storing to backend

}

Моя проблема: иногда я сталкиваюсь с проблемой параллелизма, поскольку одновременное чтение и запись происходит здесь, на myJsonArray. Как эффективный способ решить эту проблему в Android/Java? Пожалуйста, объясните на примере. Дайте мне знать, если потребуется более подробная информация.

Я прошел CopyOnWriteArrayList, и это немного дороже, как упомянуто в документации. Пожалуйста, объясните на примере, что можно сделать в этом случае.

0 ответов

Другие вопросы по тегам