Поиск 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);
}
} `