Institute of Computer Science
  1. Courses
  2. 2024/25 spring
  3. Object-oriented Programming (LTAT.03.003)
ET
Log in

Object-oriented Programming 2024/25 spring

  • 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.

  • Institute of Computer Science
  • Faculty of Science and Technology
  • University of Tartu
In case of technical problems or questions write to:

Contact the course organizers with the organizational and course content questions.
The proprietary copyrights of educational materials belong to the University of Tartu. The use of educational materials is permitted for the purposes and under the conditions provided for in the copyright law for the free use of a work. When using educational materials, the user is obligated to give credit to the author of the educational materials.
The use of educational materials for other purposes is allowed only with the prior written consent of the University of Tartu.
Terms of use for the Courses environment