Witam!
Jestem BARDZO początkującym programistą Javy i mam pewien problem. Otóż za zadanie miałem napisać program sortujący tablicę poprzez najpierw podzielenie jej na pół i później przez scalanie (merge sort) tak, aby operacje sortowania tych dwóch podtablic były odrębnymi wątkami.
Moje pytanie brzmi - jak powinienem zmodyfikować poniższy kod, aby program działał współbieżnie?

public class Sortowanie extends Thread {
    int[] tablica;
    int poczatek;
    int koniec;
	
    public Sortowanie(int[] tab, int pocz, int kon) {
        this.tablica=tab;
        this.poczatek=pocz;
        this.koniec=kon;
    }
	
    private void sort(int[] tab) {
       int i=poczatek;
       int j=koniec/2;
       int pom = 0;
       while (i < koniec / 2 && j < koniec) {
			if (tablica[i] < tablica[j]) {
				tab[pom++] = tablica[i++];
			} else {
				tab[pom++] = tablica[j++];
			}
       }
	   
       while (i < koniec / 2) {
           tab[pom++] = tablica[i++];
       }
	   
       while (j < koniec) {
           tab[pom++] = tablica[j++];
       }
       System.arraycopy(tablica, poczatek, tab, 0, koniec - poczatek);
    }
	
    public void sort2() {
        int size = tablica.length - 1;
        for (int i = 0; i < tablica.length - 1; i++) {
            for (int j = 0; j < size; j++) {
                if (tablica[j] > tablica[j + 1]) {
                    int temp = tablica[j];
                    tablica[j] = tablica[j + 1];
                    tablica[j + 1] = temp;
                }
            }
            size = size - 1;
        }
    }
	
    @Override
    public void run() {
	
       if ((koniec - poczatek) < 4) {
           sort2();
           return;
       }
	   
       int[] t = new int[koniec];
       Sortowanie sort1 = new Sortowanie(tablica, poczatek, poczatek + ((koniec-poczatek)/2));
       Sortowanie sort2 = new Sortowanie(tablica, poczatek + ((koniec-poczatek)/2), koniec);
	   sort1.run();
       sort2.run();
       sort(t);
    }
}

Pozdrawiam!