Sunteți pe pagina 1din 5

Ministerul Educaţiei, Culturii și Cercetării al Republicii Moldova

Universitatea Tehnică a Moldovei

Departamentul Informatică și Ingineria Sistemelor

RAPORT
Lucrare de laborator nr.3
Programarea concurenta si distribuita

A efectuat:
st. gr. CR-182 Dutca Alexandru

A verificat:
lect. univ. Rotaru Lilia

Chişinău - 2020
Lucrarea de laborator nr. 3

1. Tema lucrării:

Sincronizarea firelor de execuție utilizînd metodele clasei Thread.

2. Scopul lucrării:

 Însuşirea modalităţilor de creare a thread-urilor în Java;


 Însuşirea metodelor de creare a unui grup de thread-uri;

3. Etapele de realizare:

1) Utilizarea clasei Thread pentru crearea unei clase noi;


2) Utilizarea interfeţei Runnable pentru crearea şi lansarea thread-urilor;
3) Utilizarea clasei ThreadGroup pentru crearea grupurilor de thread-uri;
4) Setarea priorităţilor thread – urilor utilizînd metoda setPriority(….);
5) Enumerarea thread-urilor şi a priorităţilorlor utilizînd metoda enumerate();
6) Utilizare metodei list();
7) Prezentarea lucrării.

Varianta 6
6 Sumeleproduselornumerelor de Sumeleproduselornumerelor de De parcurs De parcurs
pepoziţiiimparedouăcâtedouăîncepâ pepoziţiiimparedouăcâtedouăîncepând de la de la
nd de la ânceputuldiapazonului de la sfîrșituldiapazonului începutinte sfîrșitinter
rvalul valul
[19, 119] [6, 106]
[654, 1278] [123, 908]

Codul programului:
public class Main {
static Th2 th2=new Th2();
static Th4 th4=new Th4();
static Th1 th1=new Th1();
static Th3 th3=new Th3();
public static void main(String[] args) {

th2.setName("Th2");
th2.start();
th4.setName("Th4");
th4.start();

th1.setName("Th1");
th1.start();

th3.setName("Th3");
th3.start();

}
static class Th3 extends Thread {

public void run(){


String name="Disciplina-PCD";
for(int i=654;i<1278;i++){
System.out.print(getName()+":"+i+" ");
}

th3.suspend();
System.out.println();
System.out.print(getName()+" ");
for (char c : name.toCharArray()) {
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.print(c);
}

}
}

static class Th4 extends Thread {


public void run(){
String name="Grupa-CR-182";
for(int i=908;i>122;i--){
System.out.print(getName()+":"+i+" ");
}

try {
th2.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println();
System.out.print(getName()+" ");
for (char c : name.toCharArray()) {
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.print(c);
}
th4.interrupt();
}
}

static class Th2 extends Thread{


int step=-2,start=105,finish=7;

public void run(){


int s1,s2,s3;
String name="Numele-Marius";

while (start>(finish-step-step)){
s1=start*(start+step);
start=start+step+step;
s2=start*(start+step);
s3=s1+s2;
System.out.println( getName()+" (" + (start-step-step) + "*" + (start
- step) + ")"+"+" +"(" + (start) + "*" + (start + step) + ")" + "=" + s3);
start=start+step+step;
Thread.yield();

}
System.out.println();
System.out.print(getName()+" ");
for (char c : name.toCharArray()) {
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.print(c);
}
}
}

static public class Th1 extends Thread {

int step=2,start=19,finish=119;
public void run(){
int s1,s2,s3;
String name="Prenumele-Turcan";
while (start<(finish-step-step)){
s1=start*(start+step);
start=start+step+step;
s2=start*(start+step);
s3=s1+s2;
System.out.println( getName()+" (" + (start-step-step) + "*" + (start
- step) + ")"+"+" +"(" + (start) + "*" + (start + step) + ")" + "=" + s3);
start=start+step+step;
}

try {
th4.join();
} catch (InterruptedException e) {
e.printStackTrace();
}

System.out.println();
System.out.print(getName()+" ");
for (char c : name.toCharArray()) {
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.print(c);
}
th3.resume();
}
}
}

S-ar putea să vă placă și