使用2个线程对List进行排序

时间:2012-05-28 08:24:01

标签: java multithreading sorting arraylist

我正在开展一个项目而且我没有得到这个部分:

  

使用两个线程对ArrayList进行排序。每个线程都会有一种   列表的一半。主线程将等待两个线程完成,   然后他将负责合并这两个列表中的两个列表   其他线程。最后我们将有一个排序列表。将两者合并   列表不应该是传统的方式。

我在class ListePersonne中尝试这样做,此课程对ArrayList

进行排序
 Thread T1 = new ListePersonne( mylist.subList(0, unique.size()/2));
 Thread T2 = new ListePersonne(mylist.subList(unique.size()/2, unique.size())  );
 T1.start();
 T2.start();

但结果我只完成了第一部分而不是第二部分

3 个答案:

答案 0 :(得分:0)

arraylist不是线程安全的尝试向量而不是吗?

http://developer.android.com/reference/java/util/Vector.html

答案 1 :(得分:0)

1)在合并两个子列表的排序之前检查是否已完成

2)检查您是否使用来自多个线程的数组列表的同步访问。

答案 2 :(得分:0)

由于这是作业,我不会给你代码。这是提示

  1. 使用Future<List>以及Callable<List>executorCallable<T> 允许你返回一个类型,不像Runnable,它不能。
  2. future.get()将阻塞,直到线程完成执行。做 这两个线程。
  3. 获得两个排序列表后,合并。
  4. Dunno,如果你的老师会接受这个解决方案,以防万一他没有教你关于Executor框架,虽然我相信你能说服他/她;)