1 / 15

Prezentacija seminara Višedretvenost u Javi

Prezentacija seminara Višedretvenost u Javi. Luka Samaržija Voditelj: mr. Sc. Marko Čupić Zagreb, 09.06.2009. Uvod. Razvoj programskih jezika započinje 50-tih godina prošlog stoljeća Prvo se pojavljuju asembleri – brzo izvršavanje, ali prevelik kod Pojava viših programskih jezika

nonnie
Download Presentation

Prezentacija seminara Višedretvenost u Javi

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Prezentacija seminaraVišedretvenost u Javi Luka Samaržija Voditelj: mr. Sc. Marko Čupić Zagreb, 09.06.2009.

  2. Uvod • Razvoj programskih jezika započinje 50-tih godina prošlog stoljeća • Prvo se pojavljuju asembleri – brzo izvršavanje, ali prevelik kod • Pojava viših programskih jezika • Dijele se na sekvencijalne, proceduralne, funkcijske i objektno orjentirane

  3. Programski jezik Java • Objektno orijentirani viši programski jezik • Razvoj započinje 1991. godine – James Gosling i Patrick Naughton iz kompanije Sun Microsystems • Projekt naziva “Green” – stvaranje platformski nezavisnog jezika za izvođenje na svim vrstama mikroprocesora

  4. Programski jezik Java • Izvodi se na svim operacijskim sustavima gdje postoji Java virtualna mašina • Bajt-kod • Podrška za višedretvenost

  5. Procesi • Računalo obavlja neki korisni posao tako da izvodi programe pripremljene i višem programskom jeziku • Program u izvođenju nazivamo proces • Svaki proces ima svoj zaseban dio memorijskog prostora

  6. Procesi • Višeprogramski rad – više procesa se odvija paralelno koristeći različita računalna sredstva • Bolja iskorištenost računalnih sredstava • Privid paralelnosti

  7. Dretve • Odvijanje procesa obavlja se izvođenjem njegovog niza instrukcija – izvođenjem njegove dretve • Višedretvenost – svaka dretva izvodi jedan podzadatak • Dretve se izvršavaju prividno paralelno

  8. Problem sinkronizacije • Više dretvi pišu i čitaju iz istog dijela memorijskog prostora procesa • Dretva pisač mijenja podatke koje dretva čitač čita • Dretva čitač raspolaže netočnim podacima zbog čega daje netočne rezultate • Dretve se moraju sinkronizirati

  9. Binarni semafor • Poprima dvije vrijednosti 1 – semafor je prolazan 2 – semafor je neprolazan • Dretva koja naiđe na prolazan semafor ulazi u kritični odsječak te postavlja vrijednost semafora na 0 • Prilikom izlaske iz kritičnog odsječka postavlja vrijednost na 1

  10. Opći semafor • Poprima vrijednosti iz skupa prirodnih brojeva i nulu • Kada dretva pokuša proći semafor vrijednost se smanjuje za 1 • Prilikom izlaska iz kritičnog odsječka vrijednost se povečava za 1 • Semafor je neprolazan ako je vrijednost jednaka 0

  11. Potpuni zastoj • Potpuni zastoj može nastati kada se najmanje dvije dretve natječu za najmanje dva sredstva. To je stanje u kojem obje dretve ostanu zauvijek blokirane na nekom semaforu čekajući da ga ona druga dretva postavi. Dretva Di: Dretva Dk: Ispitaj Bsem[1]; Ispitaj Bsem[2]; Ispitaj Bsem[2]; Ispitaj Bsem[1]; ..... .....

  12. Sinkronizirane metode class Brojac { private int c = 0; public void increment() { c++; } public void decrement() { c--; } public int value() { return c; } }

  13. Sinkronizirane metode Pogledajmo kakav će biti tijek izvođenja: 1. Dretva A: Uzima vrijednost varijable c. 2. Dretva B: Uzima vrijednost varijable c. 3. Dretva A: Increment povećava vrijednost za 1. 4. Dretva B: Decrement smanjuje vrijednost za 1. 5. Dretva A: Sprema rezultat u varijablu c; vrijednost od c je sada 1. 6. Dretva B: Sprema rezultat u varijablu c; vrijednost od c je sada -1.

  14. Paket java.util.concurrent Implementacija redova: • BlockingQueue • SynchronousQueue • PriorityBlockingQueue

  15. Paket java.util.concurrent • Razred semaphore • metoda acquire • Razred CountDownLatch • Razred CyclicBarrier

More Related