35 0 166KB
Ministerul Educației, Culturii și Cercetării al Republicii Moldova Universitatea Tehnică a Moldovei Facultatea Calculatoare, Informatică și Microelectronică
RAPORT
Lucrare de laborator nr. 2 Disciplina: Programarea Concurenta si Distribuita
A elaborat: st.gr.CR-191FR
Balan Ion
A verificat: Lector.univ, dr.
Rotaru Lilia
Chișinău 2022
1. Tema lucrării: Gruparea firelor de execuție. Modificarea priorității lor. 2. Scopul lucrării:
Studierea modificării priorității thread-urlilor în Java;
Însuşirea metodelor de creare a unui grup de thread-uri;
3. Etapele de realizare: 1. 2. 3. 4.
Utilizarea clasei ThreadGroup pentru crearea grupelor de thread-uri; Setarea priorităţilor threadurilor utilizînd funcția setPriority(….); Utilizare funcției list(); Prezentarea lucrării.
Laborator nr.2 V1 Sarcina:
Listingul programului:
public class Main { public static void main(String[] args) { ThreadGroup sis =Thread.currentThread().getThreadGroup(); Thread Th1=new Thread("Th1"); Th1.setPriority(7); Thread Th2=new Thread("Th2"); Th2.setPriority(7); Th1.start(); Th2.start(); sis.list(); ThreadGroup G2=new ThreadGroup("G2"); Thread Th12=new Thread(G2,"Th1"); Th12.setPriority(4); Th12.start(); Thread Th22=new Thread(G2,"Th2"); Th12.setPriority(5); Th22.start(); Thread Th32=new Thread(G2,"Th3"); Th12.setPriority(5); Th32.start(); G2.list(); ThreadGroup G1=new ThreadGroup("G1"); Thread ThA =new Thread(G1,"ThA"); ThA.setPriority(3); ThA.start();
G1.list(); ThreadGroup G3=new ThreadGroup(G1,"G3"); Thread Tha=new Thread(G3,"Tha"); Tha.setPriority(3); Tha.start(); Thread Thb=new Thread(G3,"Thb"); Thb.setPriority(3); Thb.start(); Thread Thc=new Thread(G3,"Thc"); Thc.setPriority(3); Thc.start(); Thread Thd=new Thread(G3,"Thd"); Thd.setPriority(3); Thd.start(); G3.list(); } } Rezultate obtinute: java.lang.ThreadGroup[name=main,maxpri=10] Thread[main,5,main] Thread[Monitor Ctrl-Break,5,main] Thread[Th1,7,main] Thread[Th2,7,main] java.lang.ThreadGroup[name=G2,maxpri=10] Thread[Th1,5,G2] Thread[Th2,5,G2] Thread[Th3,5,G2] java.lang.ThreadGroup[name=G1,maxpri=10] Thread[ThA,3,G1] java.lang.ThreadGroup[name=G3,maxpri=10] Thread[Tha,3,G3] Thread[Thb,3,G3] Thread[Thc,3,G3] Thread[Thd,3,G3] Process finished with exit code 0 Întrebări de verificare: 1. Ce permite gruparea firelor de execuție? Gruparea firelor de execuţie pune la dispoziţie un mecanism pentru manipularea acestora ca un întreg. De exemplu, putem să lansăm sau să suspendăm toate firele dintr-un grup cu un singur apel la metodă. Gruparea firelor de execuţie se realizează prin intermediul clasei ThreadGroup.
2. Ce metodă ne permite să determinăm grupul firului curent de execuție? Pentru a afla cărui grup aparţine un anumit fir de execuţie putem folosi metoda getThreadGroup a clasei Thread. 3. Ce constructor permite crearea și plasarea firului de execuție întrun anumit grup? Crearea unui fir de execuţie şi plasarea lui într-un grup (altul decât cel implicit) se realizează prin următorii constructori ai clasei Thread: public Thread(ThreadGroup group, Runnable target) public Thread(ThreadGroup group, String name) public Thread(ThreadGroup group, Runnable target, String name)
4. Ce prioritate are firul de execuție în mod implicit? În mod implicit, un fir de execuţie are prioritatea NORM_PRIORITY, de asemenea definită în clasa Thread .
5. Ce metode ne permit determinarea și setarea priorității unui fir de execuție? Prioritatea unui fir de execuţie poate fi determinată prin metoda getPriority(). Metoda getPriority() returnează prioritatea firului de execuție, care este un număr întreg și reprezintă prioritatea curentă a firului de execuţie. Pentru a stabili prioritatea, se foloseşte metoda setPriority() și primeşte ca parametru un număr întreg, care reprezintă prioritatea dorită.
6. Ce metodă ne permite să setăm prioritatea unui grup de fire de execuție? Pentru a modifica prioritatea grupului de fire de execuție se folosește metoda setMaxPriority().