我想使用多个线程在列表中添加和删除数字。让我解释一下。
我有一个包含整数的列表。
ArrayList<Integer> list = new ArrayList<Integer>();
我也有2种方法
public void addNumber(int number) {
list.add(number);
}
public void removeNumber(int index) {
list.remove(index);
}
用户可以创建一个线程,该线程每1秒调用一次addNumber函数,也可以创建一个线程,每2秒调用一次removeNumber函数。
让我解释一下流程。
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作为列表? livedata或可观察的线程安全吗?还是我必须自己处理? (我是这些概念的新手)
此外,创建每X秒调用一次的线程的最佳方法是什么?
我们可以在这里使用rxJava吗?但是我不知道如何使用rxJava每隔X秒创建新线程并调用它们。
subscribeOn(Schedulers.newThread())
.observeOn(Schedulers.newThread())
.subscribe(s -> addNumber(s));
});
这样可以解决我的问题吗?如何每X秒添加一次通话选项?