我正在尝试使用合并排序来实现多线程。我让它在将数组切成两半的地方创建新线程。
数组的排序取决于:[数组的大小] vs [创建新线程的次数] 例如:如果我让它在大小为 70 的数组上仅创建两个线程,则数组将被排序,但如果我让它创建 6,它将返回未排序的。我认为可能的一件事是线程没有同步,但我使用了 threadName.join()
这是一些代码:merge.java
import java.util.Random;
public class merge implements Runnable {
int[] list;
int length;
int countdown;
public merge(int size, int[] newList, int numberOfThreadReps, int firstMerge) {
length = size;
countdown = numberOfThreadReps;
list = newList;
if (firstMerge == 1)
threadMerge(0, length - 1);
}
public void run() {
threadMerge(0, length - 1);
}
public void printList(int[] list, int size) {
for (int i = 0; i < size; i++) {
System.out.println(list[i]);
} …Run Code Online (Sandbox Code Playgroud)