是否创建多个线程来修改Android中的列表?

时间:2018-11-30 00:31:06

标签: java android multithreading rx-java2 android-livedata

我想使用多个线程在列表中添加和删除数字。让我解释一下。

我有一个包含整数的列表。

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秒添加一次通话选项?

0 个答案:

没有答案