我已经使用了一段代码,以便使用线程查找数组中的max元素。我已经成功地完成了对数组元素的求和,但我在如何找到最大值时遇到了一些问题。另外,在这种情况下,我还不知道如何使用覆盖运行方法!我显然使用Java。
public class maxUsingThread extends Thread {
private int lo, hi;
private int[] arr;
private static int maxInArr;
private static int[] maxArr;
public maxUsingThread(int[] arr, int lo, int hi) {
this.lo = lo;
this.hi = hi;
this.arr = arr;
}
public static int max(int[] arr) throws InterruptedException {
int len = arr.length;
maxUsingThread[] ts = new maxUsingThread[4];
for (int i = 0; i < 4; i++) {
ts[i] = new maxUsingThread(arr, (i * len) / 4, ((i + 1) * len / 4));
ts[i].start();
}
maxArr = new int[4];
int max = arr[0];
for (int i = 0; i < 4; i++) {
ts[i].join();
for (int j = 1; j < len; j++) {
if ( max < arr[i] ){
max = arr[i];
for (int k = 0; k < 4; k++) {
maxArr[0] = max;
}
}
}
}
maxInArr = maxArr[0];
for (int i = 1; i < 4; i++) {
if (maxInArr < maxArr[i]){
maxInArr = maxArr[i];
}
}
return maxInArr;
}
public static void main(String[] args) throws InterruptedException {
int[] arr = new int[100];
for (int i = 0; i < arr.length; i++) {
arr[i] = i;
}
int max = max(arr);
System.out.println("Max: " + max);
}
}
感谢您的帮助,谢谢。