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!