Поиск max/min значения массива через поток java

Мне нужно, чтобы массив делился на 2 части и в одном потоке Искомое максимальное значение первой половины массива а во втором минимальное значение второй половины массива .Есть код который делит массив на половины и находит максимум и минимум как его составить чтобы оно работало через 2 разных потоки с одного массива

`package com.company;
 import java.util.Arrays;
 import java.util.Scanner;
 public class Main {
public static void main(String[] args) {
    Max max1 =new Max();
    max1.start();
    try {
        max1.join();
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    Min min = new Min();
min.start();
    try {
        min.join();
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}
}
package com.company;
import java.util.Arrays;
import java.util.Scanner;

public class Max extends Thread {
public void run(){
Scanner s =new Scanner(System.in);
int size = s.nextInt();
int [] myArray = new int[size];
System.out.println("Enter elements of the array");
for(int i=0; i< size; i++) {
    myArray[i] = s.nextInt();
}
System.out.println(Arrays.toString(myArray));
int[] firstArray = Arrays.copyOfRange(myArray, 0, myArray.length/2);
System.out.println("First half of the array: "+Arrays.toString(firstArray));
for(int i =0; i<firstArray.length;i++)
firstArray[i]=firstArray[i];

for(int i =0; i<firstArray.length;i++)
        System.out.println(firstArray[i]+" ");
int max=firstArray[0];
for(int i=0;i<firstArray.length;i++){
    if (max > firstArray[i])
        max=firstArray[i];
}
System.out.println("Max = "+max);
}
}
package com.company;
import java.util.Arrays;
import java.util.Scanner;

public class Min extends Thread {
Scanner s =new Scanner(System.in);
int size = s.nextInt();
int [] myArray = new int[size];
public Min(int[] m){
    myArray=m;
    System.out.println("Enter elements of the array");
    for(int i=0; i< size; i++) {
        myArray[i] = s.nextInt();
    }
    System.out.println(Arrays.toString(myArray));
    int[] firstArray = Arrays.copyOfRange(myArray, 0, myArray.length/2);
    int[] secondArray = Arrays.copyOfRange(myArray, myArray.length/2, myArray.length);
    System.out.println("First half of the array: "+Arrays.toString(firstArray));
    System.out.println("Second half of the array: "+Arrays.toString(secondArray));
}
public void run(){
    int[] secondArray = Arrays.copyOfRange(myArray, myArray.length/2, myArray.length);
    System.out.println("First second of the array: "+Arrays.toString(secondArray));
    for(int i =0; i<secondArray.length;i++)
        secondArray[i]=secondArray[i];

    for(int i =0; i<secondArray.length;i++)
        System.out.println(secondArray[i]+" ");
    int min=secondArray[0];
    for(int i=0;i<secondArray.length;i++){
        if (min > secondArray[i])
            min=secondArray[i];
    }
    System.out.println("Min = "+min);
}

} `


Ответы (0 шт):