我一直在使用Linked List
已实施ArrayList
将我的数据存储在Java
中。它非常大,我使用subList
将其分区到几个区域并将其发送到不同的处理器中,创建用于处理的线程。我的系统中有80个核心,现在我创建了20个线程。每个线程必须处理来自数百万个实例的至少一百万个实例。数据分区为:
List<List<Integer>> totalInstances = new ArrayList<List<Integer>>();
//fill the data in totalInstances
List<List<Integer>> instanceSet1 = totalInstances.subList(index1,index2);
List<List<Integer>> instanceSet2 = totalInstances.subList(index2,index3);
....................
等等。我创建了这样的20套。处理几乎是不同步的。有一些同步,但似乎在极少数情况下出现。它只是在这个数据集中发生的读取操作。我没有加入从子列表中读取每个示例的步骤。在读取相应的实例列表中的所有实例之后,线程仅被同步以进入下一个连接。即使在处理期间我得到一些暂停。当每个线程读取一个实例时,它们会等待一段时间并读取另一个实例thread.the它可能是什么原因?
I/O
操作阻碍了多线程进程。 提前致谢