Создание нескольких потоков, которые изменяют список в Android? - PullRequest
0 голосов
/ 30 ноября 2018

Я хочу добавить и удалить номер из списка, используя несколько потоков.Позвольте мне объяснить.

У меня есть список, который содержит целые числа.

ArrayList<Integer> list = new ArrayList<Integer>();

Кроме того, у меня есть 2 метода

public void addNumber(int number) {
    list.add(number);
}

public void removeNumber(int index) {
    list.remove(index);
}

Пользователь может создать поток, который вызываетФункция addNumber в каждую 1 секунду, а также может создавать поток, который вызывает функцию removeNumber каждые 2 секунды.

Позвольте мне объяснить поток.

producerThread1 added number 2
producerThread2 added number 4
consumerThread1 removed index 0
producerThread3 added number 3
producerThread1 added number 6
consumerThread1 removed index 3
consumerThread2 removed index 2
producerThread2 added number 1
.....

Я думаю, что параллелизм может произойти вВот.Как я могу решить это?

Можем ли мы использовать LiveData или Observable для списка?Livingata или наблюдаемый потокобезопасный?Или я должен иметь дело самостоятельно?(Я новичок в этих понятиях)

Кроме того, каков наилучший способ создания потоков, которые вызывают каждые X секунд?

Можем ли мы использовать здесь rxJava?Но я не знаю, как создавать новые потоки и вызывать их каждые X секунд, используя rxJava.

subscribeOn(Schedulers.newThread())
        .observeOn(Schedulers.newThread())
        .subscribe(s -> addNumber(s));
        });

Решает ли это мою проблему?Как добавить опцию каждые X секунд?

...