Vi edretvenost u javi
This presentation is the property of its rightful owner.
Sponsored Links
1 / 22

Višedretvenost u Javi PowerPoint PPT Presentation


  • 72 Views
  • Uploaded on
  • Presentation posted in: General

Višedretvenost u Javi. Nataša Cvrlje Voditelj: mr.sc. Marko Čupić. Programski jezik Java. 1990. James Gosling dizajnirao programski jezik Oak Razni projekti dali mogućnost Oak-u da se razvija i sazrijeva Sun Microsystems otkrio da je ime Oak već upotrijebljeno, te je promijenjeno u Java.

Download Presentation

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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Vi edretvenost u javi

Višedretvenost u Javi

Nataša Cvrlje

Voditelj: mr.sc. Marko Čupić


Programski jezik java

Programski jezik Java

  • 1990. James Gosling dizajnirao programski jezik Oak

  • Razni projekti dali mogućnost Oak-u da se razvija i sazrijeva

  • Sun Microsystems otkrio da je ime Oak već upotrijebljeno, te je promijenjeno u Java.


Programski jezik java1

Programski jezik Java

  • Java je:

    • jednostavni

    • objektno-orijentirani

    • višedretveni

    • siguran programski jezik

    • neovisan o platformi na kojoj se pokreće zbog posebnog međukoda (eng. byte-code)


Dretve

Dretve

  • Računalo izvodi programe pripremljene u višem programskom jeziku.

  • Program se prevodi u strojni oblik  proces.

  • Procesi u raznim fazama svojeg odvijanja raznoliko troše računalna sredstva

  • Omogućavamo da se više procesa odvija paralelno koristeći različita računalna sredstva.


Dretve1

Dretve

  • Dretva  niz instrukcija programa

  • Suvremeni OS podržavaju izvođenje procesa s više dretvi (višedretvenost)

  • Oblik paralelizacije na razini procesa

  • Izvedbena okolina Java programa dopušta višedretveni način rada


Kreiranje dretvi

Kreiranje dretvi

  • Aplikacija koja stvara primjerak razreda Thread : mora zadati kod koji će ta dretva izvršavati nakon što ju se pokrene

  • Prvi način : stvorimo primjerak razreda Runnable

    public class HelloRunnable implements Runnable {

    public void run() {

    System.out.println(“U ovoj metodi se obavlja posao dretve.");

    }

    public static void main(String args[]) {

    (new Thread(new HelloRunnable())).start();

    }

    }


Kreiranje dretvi1

Kreiranje dretvi

  • Drugi način : stvorimo razred koji proširuje razred Thread

    public class HelloThread extends Thread {

    public void run() {

    System.out.println(“Pozdrav iz dretve!");

    }

    public static void main(String args[]) {

    (new HelloThread()).start();

    }

    }

  • Drugi način je jednostavniji za uporabu i bolji kad je u pitanju neka jednostavnija aplikacija


Ivotni ciklus dretve

Životni ciklus dretve


Osnovne operacije s dretvama

Osnovne operacije s dretvama

  • Pozivanje statičke metode Thread.sleep blokira izvršavanja dretve na određeni period vremena

  • Prekid (eng. Interrupt) je indikacija dretvi da prekine s obavljanjem trenutnog posla i da obavi neku drugu radnju

  • Dretva se smatra živom od trenutka neposredno prije početka izvođenja metode run() pa sve do trenutka povratka iz te iste metode.


Vi edretvenost

Višedretvenost

  • Komunikacija dretvi se primarno sastoji od dijeljenja pristupa istim poljima i varijablama.

  • Moguće su dvije vrste pogreški.

    -interferencija dretvi

    -pogreške dosljednosti memorije


Vi edretvenost1

Višedretvenost

  • Interferencija se dogodi kada dvije operacije, koje se pokreću u različitim dretvama, pristupaju istim varijablama i memorijskim lokacijama u isto vrijeme.

  • Posljedica : različite dretve dobivaju različite informacije o istom podatku


Vi edretvenost2

Višedretvenost

class Brojac {

private int c = 0;

public void increment() {

c++;

}

public void decrement() {

c--;

}

public int value() {

return c;

}

}


Sinkronizirane metode

Sinkronizirane metode

  • Dva osnovna načina sinkronizacije dretvi:

    • sinkronizirane metode

    • sinkronizirani blokovi naredbi

  • U deklaraciji metode dodajemo ključnu riječ synchronized

  • Što će se dogoditi ako više dretvi istovremeno pozove sinkronizirane metode nad istim objektom?

  • Samo jedna dretva će dobiti pristup metodi, ostale su blokirane


  • Atomarni pristup

    Atomarni pristup

    • Atomarna naredba : izvodi se u jednom koraku

    • Čak ni uvećavanje varijable za jedan nije atomarna naredba

    • Dodavanjem ključne riječi volatile u deklaraciju varijable činimo njeno pisanje i čitanje atomarnom naredbom


    Mutexi

    Mutexi

    • Kritični odsječci : djelovi koda koji koriste memorijske resurse nekog objekta što omogućuje pojavu pogreški ako to napravi više dretvi istovremeno

    • Za sinkronizaciju dretvi dovoljno zaštititi samo kritične odsječke

    • Osnovna ideja bi bila izgraditi mehanizam koji bi oponašao dvije metode:

      UđiUKritičniOdsječak();

      IzađiIzKritičnogOdsječka();


    Mutexi1

    Mutexi

    • Uloga mutexa jest da glumi objekt kontroler, a ostvaruje ju tako što ga koristimo u naredbi:

      synchronized(mutex){

      ...//kriticni odsjecak

      }

    • Mutex učinkovito zamjenjuje naredbe :

      • UđiUKritičniOdsječak() : ulaskom u spomenuti blok

      • IzađiIzKritičnogOdsječka() : izlaskom iz bloka


    Monitori

    Monitori

    • Sinkronizacija je izgrađena oko pojma složenih mutexa (eng. Intrinsic locks) koji se često nazivaju monitori

    • Dok god neka dretva posjeduje monitor , nijedna druga dretva ne može pristupiti resursima objekta.

    • Sve dretve koje za to vrijeme zatraže monitor, prelaze u blokirano stanje sve dok se monitor ne oslobodi.

    • Pri sinkronizaciji dretvi često se koriste metode wait(), notify(), te notifyAll() koje Java nudi kroz razred java.lang.Object.


    Potpuni zastoj i izgladnjivanje

    Potpuni zastoj i izgladnjivanje

    • Potpuni zastoj (eng. deadlock) predstavlja mogućnost lošeg ostvarenja sinkronizacije dretvi gdje postoji mogućnost da dvije dretve ostanu zauvijek blokirane, svaka od njih čekajući da ova druga obavi neku radnju.

    • Izgladnjivanje nastaje kada dretva nije u mogućnosti dobivanja pristupa varijabli koju dijeli s drugim dretvama te zbog toga ne može napredovati. Ova situacija nastaje ako je tu varijablu zauzela neka druga dretva na duži period vremena.


    Problem filozofa

    Problem filozofa


    Problem filozofa1

    Problem filozofa


    Problem filozofa2

    Problem filozofa


    Vi edretvenost u javi

    KRAJ

    Hvala na pažnji!


  • Login