Monika Dekster

Laboratorium 9: Współbieżność, klasa ForkJoinPool

Zadania

W oparciu o przedstawione na zajęciach przykłady napisz program wykorzystujący klasę ForkJoinPool wraz z RecursiveAction do współbieżnego posortowania dużej (np. 1000000 elementów) tablicy liczb rzeczywistych. Algorytm działa rekursywnie, czyli jeżeli podany fragment tablicy do posortowania jest mniejszy od zadaniej wartości progowej, sortuje sekwencyjnie (można wykorzystać bibliotekę). Dla długości większych od progu dzieli otrzymany fragment na 2 części i rekursyjnie wywołuje funkcję sortującą dla tych części. Posortowane fragmenty są następnie łączone.

Uwagi:

  1. Do połączenia dwóch posortowanych tablic należy wykorzystać funkcję merge() (należy ją napisać). Połączenie polega na stworzeniu tablicy wyjściowej kopiując do niej elementy obu tablic tak, by zachować uporządkowanie elementów.
  2. Po posortowaniu należy sprawdzić, czy elementy tablicy wyjściowej stanowią rzeczywiście ciąg niemalejący.