我正在开展一个项目而且我没有得到这个部分:
使用两个线程对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();
但结果我只完成了第一部分而不是第二部分
答案 0 :(得分:0)
arraylist不是线程安全的尝试向量而不是吗?
http://developer.android.com/reference/java/util/Vector.html
答案 1 :(得分:0)
1)在合并两个子列表的排序之前检查是否已完成
2)检查您是否使用来自多个线程的数组列表的同步访问。
答案 2 :(得分:0)
由于这是作业,我不会给你代码。这是提示
Future<List>
以及Callable<List>
和executor
。 Callable<T>
允许你返回一个类型,不像Runnable,它不能。future.get()
将阻塞,直到线程完成执行。做
这两个线程。Dunno,如果你的老师会接受这个解决方案,以防万一他没有教你关于Executor框架,虽然我相信你能说服他/她;)