我想实现一个多线程的合并排序。
下面是我的代码:
public class MergeSort<E extends Comparable<T>> implements Runnable {
public void run() {
mergeSort(array);
}
public synchronized void mergeSort(List<E> array) {
int size = array.size();
if (size > 1){
int mid = size / 2;
List<T> l = array.subList(0,mid);
List<T> r = array.subList(mid,vec.size());
Thread t = new Thread(new MergeSort<E>(left));
Thread t2 = new Thread(new MergeSort<E>(right));
t.start();
t2.start();
merge(l, r, array);
}
}我希望我的MergeSort运行,创建2个新线程,然后该方法调用merge并完成他的作业。我在没有线程的情况下尝试,只是调用Mergesort(左)...它起作用了,所以我的算法是正确的,但是当我尝试处理线程时,列表没有排序。
那么,如何同步线程呢?我知道会有太多的线程,但我只想知道如何同步来排序列表。
发布于 2015-12-23 21:46:20
我不能确切地说出,因为一些代码丢失了,但看起来确实像是你用"left“两次调用了mergesort。
发布于 2015-12-23 21:47:18
有几件事需要牢记:
https://stackoverflow.com/questions/34436999
复制相似问题