Niti Flashcards

1
Q

Uvod, race hazard, sin

A

Nit kontrole, visenitno programiranje, skupovi podataka nisu disjunktni, sinhronizacija=eksluzivan pristup podacima, izvrsavanje konkurentno ili paralelno

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Kreiranje, pokretanje i zavrsavanje niti

A

Klasa Thread u standardnoj biblioteci
Metod start aktivira nit(ona postaje spremna) zatim se zavrsava metod
Nakon kreiranja nit se moze konfigurisati i/ili pokrenuti
VM pokrece run metod aktivne niti koji treba biti redefinisan u korisnickoj klasi jer standardan metod run ne radi nista
Kada metod run niti zavrsi, nit zavrsava izvrsavanje

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Sleep i run izuzeci

A

Metoda run ne moze bacati izuzetke
Metod sleep moze da baci interrupted exception

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Kreiranje niti Runnable interfejsom

A

Interfejs Runnable je apstrakcija koncepta aktivnog objekta, ima samo jednu metodu - run, klasa Thread implementira Runnable

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Konstruktori klase Thread

A

public Thread(Runnable cilj)-koristi metod run objekta cilj
public Thread(Runnable cilj, String ime)
public Thread(ThreadGroup grupa, Runnable cilj)
public Thread(ThreadGroup grupa, Runnable cilj, String ime, long velicinaSteka)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Neki metodi klase Thread

A

public final void setName(String ime)
public final String getName()
public long getId()
boolean is Alive()
String toString()
public static Thread currentThread()

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Zavrsavanje niti

A

Nit se normalno zavrsava po povratku iz njenog metoda run
Zastareli metodi za eksplicitno zaustavljanje stop i destroy
Prepureceno: postavi se uslov kraja metodom aktivnog objekta i u nekoj petlji metoda run se proverava taj uslov, ako je ispunjen nit sama zavrsi run metod

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Suspendovanje i reaktiviranje niti

A

U prvoj verziji jave suspedn() i resume()- sada zastraeli metodi
Nit se moze suspendovati metodom sleep(), a reaktivirati slanjem signala prekid toj niti

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Prekidanje niti

A

Nestaticki metod klase Thread interrupt()-salje signal prekida niti, postavlja joj statu prekida
Metodi za ispitivanje statusa prekida:
interrupted()- staticki metod,testira da li je tekuca nit bila prekinuta i menja status prekida
isInterrupted()-testira da li je ciljna nit prekinuta i ne menja status prekida

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Prekidanje niti u blokiranom stanju

A

Poziv interrupt
-deblokira nit, izlazi se iz metoda koji je blokirao
-dati metod baca interrupted exception
-status prekida se ponistava ulaskom u catch granu

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Cekanje da druga nit zavrsi

A

Po zavrsetku metode run objekat niti ne nestaje, moze se pristupiti njegovom stanju
Nit moze da ceka da druga nit zavrsi pozivom join() te druge niti

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Oblici join

A

public final void join() throws InterruptedException
public final void join(long ms) throws InterruptedException
public final void join(long ms, int ns) throws InterruptedException

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Neizvesnost trke

A

Dve niti mogu uporedo da citaju i menjaju polje nekog pasivnog objekta sto ga moze dovesti u nekozistentno stanje
Neizvesnost je u get-modify-set sekvenci
Resenje u javi se postize sinhronizacijom zasnovanom na bravi (lock) - dok jedan nit pristupa objektu on se zakljucava da spreci pristup druge niti

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Sinhronizacija

A

Modifikator metoda synchronized aktivira mehanizam pristupa preko brave
Kada nit zakljuca objekat samo ta nit moze da mu pristupa
Ako vise niti pozove metode tog objekta, sve cekaju
Sinhronizacija omogucava uzajamno iskljucivanje niti nad zajednickim objektom
Konstruktor ne treba biti sinhronizovan
Dodata razlog protiv javnih podataka
Obrada ugnezdenih poziva

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Sinhronizacija statickih metoda

A

Staticki sinhronizovani metodi rade sa bravom klase a ne bravom objekta, jer su to metodi klase a ne objekta
Dve niti ne mogu da izvrsavaju sinhronizovane staticke metode jedne klase u isto vreme
Jedna nit moze izvrsavati staticki sinhr metod dok druga izvrsava nestaticki sinhr metod- brava klase ne utice na brave objekta

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Sinhronizacija i nasledjivanje

A

Osobina synchronized se ne nasledjuje, redefinisani metod moze biti sin ili ne, bez obzira na metod natklase
Novi redef metod ne menja sin osobinu metoda natklase

17
Q

Sinhronizovane naredbe

A

Nacin sinhronizacije bez pozivanja sinh metoda nekog objekta
synchronized (izraz) naredba

18
Q

Koriscene postojece klase

A

….
bolje sa redef metodima i izvedenom klasom

19
Q

Metodi wait i notify

A

Nacin komunikacije izmedju niti
Metod wait() ceka pozivaoca dok se ispuni neki uslov
Metod notify() obavestava one koji cekaju da je nesto promenjeno, poziva onaj koji menja uslov na koji neko ceka
Ovi metodi su definisani u klasi object, nasledjuju se i ne mogu se menjati
Pozivaju se samo iz synchronized metoda

20
Q

Koja brava se koristi u wait() i notify()

A

Koristise brava onih objekata iz cijih sinhronizovanih metoda se pozivaju

21
Q

Koje operacije nad nitima cine jednu atomsku?

A

Wait() u atomskoj operaciji blokira nit i oslobadja bravu objekta
Nakon sto je stigao notify() pre izvrsavanja, ponovo se ceka na bravi, brava se zakljucava o nit se deblokira

22
Q

Test uslova i petlja

A

Petlja mora da se izvrsava u sinhronizovanoj metodi, a test uslova se ne sme zameniti sa if

23
Q

koga budi metod notify()

A

budi samo jednu nit, nije sigurno da ce se probuditi nit koja je najduze cekala

24
Q

metod notifyAll()

A

za budjenje svih niti koje cekaju treba koristiti metod notifyAll(), i u nacelu njega treba koristiti
notify() je samo optimizacija koja ima smisla kada samo jedna nit ima korist od uslova
ako nijeda nit nije usla u wait() signali notify i notifyAll se gube

25
Q

Rasporedjivanje niti

A

Nit najviseg prioriteta ce se izvrsavati i sve niti istog prioriteta ce dobiti procesorsko vreme
Niti nizeg prioriteta se garanrovano zvrsavaju samo kada su niti viseg blokirane
prioriteti treba da se koriste samo radi uticanja na rasporedjivanje niti zbog efikasnosti

26
Q

Prioriteti

A

Inicijalno nit ima prioritet jednak niti koja ju je kreirala, koji se moze procitati i promeniti u bilo kom trenutku

27
Q

metod yield()

A

tekuca nit predaje procesor da bi drugima omogucila izvrsavanje

28
Q

uzajamno blokiranje deadlock

A

kada postoje barem dva aktivna objekta koja pozivaju sinhronizovane metode moze se desiti deadlock

29
Q

Zavrsavanje izvrsenja aplikacije

A

Svaka aplikacija pocinje jednom niti koja izvrsava main
Postoje dve vrste niti: korisnicke i demonske
Kada main stigne do kraja korisnicke niti nastavljaju i aplikacija se ne zavrsava
Demonske niti zavrsavaju aplikaciju ako nema korisnickih niti
aplikacija se izvrsava sve dok se sve korisnicke niti ne kompletiraju

30
Q

Demonske niti

A

Demonstvo se nasledjuje od niti koja kreira novu nit
getDeamon - testira
setDeamon(true) - oznacava kao demonsku
Demonstvo se ne moze promeniti nakon sto se nit startuje

31
Q

volatile

A

polje se treba markirati kao volatile ako vise niti moze da cita/modifikuje njegovu vrednost

32
Q

Zasto se niti svrstavaju u grupe niti?

A

Iz sigurnosnih razloga: obrada neuhvacenih izuzetaka, ogranicavanje prioriteta, ogranicavanje pristupa informacijama o nitima
Jedna grupa niti moze sadrzati drugu grupu niti pri cemu nit moze modifikovati samo niti iz svoje grupe i njenih podgrupa
Svaka nit pripada nekoj grupi niti koja se moze specificirati u konstruktoru, a podrazumevano je grupa niti koja kreira novu nit

33
Q

Priotiteti u grupi niti

A

Grupe niti se mogu koristiti za postavljanje gornje granice prioriteta niti koje ona sadrzi, pokusaj postavljanja prioriteta na veci bce redukovan bez obavestenja