链表实现了arraylist,用于分区数据和顺序访问

时间:2012-07-18 07:59:30

标签: java multithreading parallel-processing arraylist linked-list

我一直在使用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它可能是什么原因?

  1. 是否因使用链表?
  2. 我正在打印每个线程访问的实例。我听说I/O 操作阻碍了多线程进程。
  3. 任何适合它的数据结构?
  4. 用于查找性能障碍的任何调试工具?
  5. 提前致谢

0 个答案:

没有答案