同时从多个方法写入相同的ArrayList

时间:2017-03-12 06:55:52

标签: java arraylist

我有几个数据监听器,它们可能大致同时接收数据集。他们将使用其方法$ rm s $ make s CFLAGS=-fno-builtin-strlen cc -fno-builtin-strlen s.c -o s $ LD_PRELOAD=$PWD/strlen.so ./s 43 $ LD_PRELOAD=$PWD/libasm.so ./s 42 迭代数据集并将数据存储到同一ArrayList。这可能会导致某些数据项的任何问题无法存储吗?

2 个答案:

答案 0 :(得分:2)

ArrayList未同步。来自docs

  

请注意,此实现未同步。如果有多个线程   同时访问一个ArrayList实例,并且至少有一个   线程在结构上修改列表,必须同步   外部。 (结构修改是添加或的任何操作   删除一个或多个元素,或显式调整后备数组的大小;   仅设置元素的值不是结构   修改。)

您可以将synchronizedList用于此

List list = Collections.synchronizedList(new ArrayList(...));

答案 1 :(得分:0)

在这种情况下,您可以使用synchronized块:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical" android:layout_width="match_parent"
 android:layout_height="match_parent">

 <com.jjoe64.graphview.GraphView
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:id="@+id/graph" />

 </LinearLayout>

您可以在Synchronized

找到一个很好的例子