我想实现与多线程的合并。
所以这是我的代码:
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并完成他的工作。 我尝试没有线程,juste通过调用Mergesort(左)...它工作,所以我的算法是正确的,但是当我尝试使用线程时,List没有排序。
那么,如何同步线程?我知道会有太多线程,但我只是想知道如何同步以对列表进行排序。
答案 0 :(得分:0)
我无法准确说出因为某些代码丢失了,但看起来你似乎正在调用mergesort&#34; left&#34;两次。
答案 1 :(得分:0)
要记住几件事: