Я хочу добавить и удалить номер из списка, используя несколько потоков.Позвольте мне объяснить.
У меня есть список, который содержит целые числа.
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 секунд?