Arvutiteaduse instituut
  1. Kursused
  2. 2024/25 kevad
  3. Objektorienteeritud programmeerimine (LTAT.03.003)
EN
Logi sisse

Objektorienteeritud programmeerimine 2024/25 kevad

  • Kodutööd ja praktikumid
  • Loengud
  • Kursuse korraldus
  • IDE juhend
  • Süvendusrühm
  • Silumisest

Paralleelarvutused

Koosta paralleelarvutusprogramm, mis loeb ja töötleb paralleelselt mitut sisendfaili. Programm saab käsurea parameetritega sisendfailide nimed (relative pathid). Sisendfaile võib olla väga palju (üle 100 000).

Sisendfailid on utf-8 tekstifailid, millest igaüks sisaldab väga väga palju täisarve. Failides võivad kõik arvud olla tühikutega eraldatuna ühel real, aga võivad olla ka mitme rea peale jaotatud. Igas failis on vähemalt üks arv. Failid ja ka üksikud read võivad olla nii suured, et need ei mahu korraga mälusse ära.

Arvud võivad olla suuremad, kui mahub long tüüpi muutujasse. Sellega hakkama saamiseks peab programm kasutama arvude hoidmiseks BigInteger klassi.

Programm peab failide töötlemiseks looma protsessorituumadega võrdse arvu threade (workerid). Loo üks ühine BlockingQueue, millest kõik workerid töötlemist vajavate failide nimesi võtavad. Loo teine ühine BlockingQueue, kuhu workerid iga faili kohta järgneva komplekti lisavad: töödeldud faili nimi, selle faili suurim üksik arv ja kõigi arvude summa.

Programmi lõppedes peab main threadist ekraanile väljastama:

  1. Kõikide leitud arvude kogusumma
  2. Kõige suurema leitud üksiku arvu väärtuse ja vastava faili nime
  3. Kõige väiksema arvude summaga faili nime

Programm peab töötama korrektselt ilma ühtegi synchronized plokki vajamata.

NB! Tulemuste komplekti queue kaudu saatmisel ei tohi andmete õiged tüübid kaduma minna. Loo vajadusel tulemuste hoidmiseks eraldi klass.

Vihje: Vaata Practice12 PahupidiPööraja koodi.

Vihje: Faili lugemiseks üks mugavamaid variante on Scanner.next().

Soovi korral võib threadid+BlockingQueue asemel kasutada ExecutorService+Future.

  • Arvutiteaduse instituut
  • Loodus- ja täppisteaduste valdkond
  • Tartu Ülikool
Tehniliste probleemide või küsimuste korral kirjuta:

Kursuse sisu ja korralduslike küsimustega pöörduge kursuse korraldajate poole.
Õppematerjalide varalised autoriõigused kuuluvad Tartu Ülikoolile. Õppematerjalide kasutamine on lubatud autoriõiguse seaduses ettenähtud teose vaba kasutamise eesmärkidel ja tingimustel. Õppematerjalide kasutamisel on kasutaja kohustatud viitama õppematerjalide autorile.
Õppematerjalide kasutamine muudel eesmärkidel on lubatud ainult Tartu Ülikooli eelneval kirjalikul nõusolekul.
Courses’i keskkonna kasutustingimused