Vi edretvenost u javi
Download
1 / 22

Višedretvenost u Javi - PowerPoint PPT Presentation


  • 113 Views
  • Uploaded on

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.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Višedretvenost u Javi' - merv


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



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.





    KRAJ

    Hvala na pažnji!