我正在尝试使用多个线程填充静态数组。https://stackoverflow.com/a/1492077/10418317join()中的建议用法似乎对线程施加了特定的顺序。如果可以的话,我希望它们并行运行,以加快整个过程的分配
public class Assigment {
public static int minPrime;
public static int maxPrime;
public static int[] masterMin = new int[10];
public static int[] masterMax = new int[10];
public static void main(String[] args) {
// TODO code application logic here
for(int i = 1; i < 11;i++){
Thread thread = new Thread(new NumGenerator(i));
thread.start();
System.out.println("Thread " + i + " generating nums");
}
Arrays.sort(masterMin);
Arrays.sort(masterMax);
minPrime = masterMin[0];
maxPrime = masterMax[9];
System.out.println("<------------------------------>");
System.out.println("Max Prime is " + maxPrime);
System.out.println("Min Prime is " + minPrime);
}
}
数字发生器
public class NumGenerator implements Runnable {
int[] numbers;
int thrnum;
public NumGenerator(int thrnum){
this.thrnum = thrnum;
}
@Override
public void run(){
Random rand = new Random();
numbers = new int[3000];
for(int i = 0; i<3000; i++){
numbers[i] = rand.nextInt(899999)+1;
}
Searcher searcher = new Searcher(numbers);
Assigment.masterMax[thrnum-1] = searcher.max;
Assigment.masterMin[thrnum-1] = searcher.min;
}
我试图在每个线程完成输入后对数组进行排序,然后打印出第一个和最后一个,即最小值和最大值。问题是数组masterMin和masterMax似乎在假定之后仍然具有所有零条目通过Assigment.masterMin[thrnum-1] = searcher.min; Searcher填充是另一个类,它实际上给了我非零值search.max,search.max正如预期的那样。