-1

我正在做一个项目,但我没有得到这部分:

使用两个线程对 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();

但结果我只完成了第一部分,但没有完成第二部分

4

3 回答 3

0

arraylist 不是线程安全的

试试矢量?

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

于 2012-05-28T08:29:22.023 回答
0

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

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

于 2012-05-28T08:34:19.037 回答
0

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

  1. 与和Future<List>一起使用。 允许您返回与 Runnable 不同的类型,后者不能。Callable<List>executorCallable<T>
  2. future.get()将阻塞直到线程完成执行。对两个线程执行此操作。
  3. 一旦你有两个排序列表,合并。

不知道你的老师是否会接受这个解决方案,但万一他没有教你关于 Executor 框架的知识,但我相信你能说服他/她;)

于 2012-05-28T08:41:03.477 回答