Sunteți pe pagina 1din 10

Ministerul Educației al Republicii Moldova

Universitatea Tehnică a Moldovei


Facultatea Calculatoare, Informatică şi Microelectronică
Departamentul Ingineria Software şi Automatică

Raport
Lucrarea de laborator nr.1
Disciplina: Programare concurentă și distribuită

A efectuat: st. gr. CR-182:

D.Nepiivoda
A verificat L. Rotaru

Chișinău - 2020
● Tema lucrării: Crearea thread-urilor
● Scopul lucrării: Însuşirea modalităţilor de creare a thread-urlilor în Java;
● Etapele de realizare:
● Utilizare clasei Threadpentru crearea unei clase noi;
● Utilizarea interfeţei Runnable pentru crearea şi lansarea de thread-uri;
● Prezentarea lucrării.

Sarcina:
Scrieţi un program care creează doua fire de execuţie. Ambele fire vor citi datele din acelaşi tablou de date
mas[] de tipul int, generat aleatoriu cu dimensiunea 100 şi ce cuprinde valori intre 1 şi 100. Primul fir Th1 va
afişa: Condiţie 1 din tabelul 1. Al doilea fir Th2 va afişa: Condiţie 2 din tabelul 1. Apoi după terminarea
ambelor fire de execuţie thread-ul principal va afişa informaţia despre studentul care a efectuat lucrarea dată
de laborator, literele textului vor apărea pe ecran cu un interval de 100 milisecunde.

VAR 3
Sumele numerelor pare două cate două Sumele numerelor pare două cate două începând
începând căutarea şi sumarea de la primul căutarea şi sumarea de la ultimul element
element

Codul programului:

package com.company;

import java.util.logging.Logger;

class Counter extends Thread {

static int T[];


static int A[];
private int from, to, step;

public Counter(int from, int to, int step) {


this.from = from;
this.to = to;
this.step = step;
}

@Override
public void run() {
int i, S, c;
int d = 0;
int sum = 0;
int flag = 0;
S = 0;
c = 0;
i = from;
System.out.println();
while (i != to) {
if (T[i] % 2 == 0) {
c++;
S = S + T[i];
if (c % 2 == 0) {
sum = sum + S;
flag++;
System.out.println("Suma = " + S + "- Numele firului -" +
this.getName());
S = 0;
if (flag % 2 == 0) {
System.out.println("Suma a doua fire = " + sum);
sum = 0;
}
}
}
i = i + step;
}
}

public static void main(String args[]) {


T = new int[500];
int i;

for (i = 0; i < 500; i++) {


T[i] = ((int) (Math.random() * 100));

System.out.print(T[i] + " ");

Counter cnt1, cnt2;

cnt1 = new Counter(0, 499, 1);

cnt2 = new Counter(499, 0, -1);

cnt1.start();
cnt2.start();

String str=" A efectuat: Dmitrii Nepiivoda.\nA verificat: Rotaru L.\n";


for( i=0;i<str.length();i++)

{
System.out.print(str.charAt(i) );
try {
Thread.sleep(100);
} catch (InterruptedException ex) {
Logger.getLogger(Counter.class.getName());
}
}

}
}
Rezultatul:

68 11 31 89 64 63 91 4 49 84 52 2 0 24 63 63 30 72 64 80 23 2 12 25 17 24 80 25 16 97
90 11 49 28 52 28 75 71 10 32 41 61 60 33 54 42 90 65 65 91 20 35 91 30 44 96 77 7 73
10 21 87 73 25 69 24 0 22 95 30 37 2 17 92 71 45 54 55 6 48 46 10 30 3 23 17 17 53 32
19 71 18 32 76 6 84 26 18 59 4 87 65 67 38 45 48 91 70 22 33 74 99 92 15 21 96 25 50
60 24 84 54 71 9 26 94 37 36 97 74 19 76 59 46 15 8 71 1 31 78 71 75 34 72 29 36 71 49
23 76 32 82 88 92 19 70 94 96 9 12 92 61 70 74 16 74 52 73 76 43 97 3 67 61 47 80 41
30 6 99 20 7 84 93 17 26 12 43 20 30 19 40 21 45 6 63 36 4 74 55 48 33 9 87 8 24 69 23
63 77 25 92 91 49 30 7 55 21 29 89 69 15 6 82 93 4 66 51 68 82 90 29 96 67 45 55 30 50
45 42 87 10 47 6 95 58 52 54 13 3 88 71 8 59 51 97 42 65 96 28 64 18 37 43 70 72 8 10
45 0 29 88 99 66 91 9 11 20 26 85 72 58 26 63 52 88 18 30 72 68 34 32 21 75 19 61 20
30 21 55 89 59 34 26 37 62 69 35 1 52 76 22 45 72 6 84 35 14 11 22 27 56 24 41 67 85
75 33 74 19 42 41 13 9 0 57 80 97 13 85 5 39 53 40 75 84 42 59 0 17 57 48 96 92 51 91
52 94 66 90 40 87 9 38 85 31 92 72 54 79 27 60 44 80 31 78 45 73 62 3 22 55 14 83 29
92 1 10 82 29 89 57 40 43 8 33 24 23 21 24 72 76 55 12 69 77 42 64 26 62 85 30 54 5 5
83 89 96 55 90 65 88 21 6 58 85 65 52 56 52 88 31 88 95 86 19 15 30 24 75 37 56 25 88
90 18 78 7 21 50 92 76 89 60 82 17 23 36 67 3 97 26 58 96 90 77 78 95 96 75 0 20 40 93
24 17 69 10 90 44 55 27 31 79 21 67 24 74 10 22 1 56 60 97 55 63 3 35 1 12

Suma = 72- Numele firului -Thread-1


Suma = 132- Numele firului -Thread-0
Suma = 78- Numele firului -Thread-1
Suma = 88- Numele firului -Thread-0
Suma a doua fire = 220
Suma = 54- Numele firului -Thread-0
Suma = 24- Numele firului -Thread-0
Suma a doua fire = 78
Suma a doua fire = 150
Suma = 102- Numele firului -Thread-0
Suma = 84- Numele firului -Thread-1
Suma = 144- Numele firului -Thread-0
Suma = 68- Numele firului -Thread-1
Suma a doua fire = 246
Suma a doua fire = 152
Suma = 14- Numele firului -Thread-0
Suma = 100- Numele firului -Thread-1
Suma = 104- Numele firului -Thread-0
Suma = 64- Numele firului -Thread-1
Suma a doua fire = 118
Suma a doua fire = 164
Suma = 106- Numele firului -Thread-0
Suma = 20- Numele firului -Thread-1
Suma = 80- Numele firului -Thread-0
Suma = 174- Numele firului -Thread-1
Suma a doua fire = 186
Suma = 38- Numele firului -Thread-0
Suma = 92- Numele firului -Thread-0
Suma a doua fire = 130
Suma = 96- Numele firului -Thread-0
Suma a doua fire = 194
Suma = 110- Numele firului -Thread-0
Suma = 186- Numele firului -Thread-1
Suma a doua fire = 206
Suma = 84- Numele firului -Thread-1
Suma = 74- Numele firului -Thread-0
Suma a doua fire = 270
Suma = 106- Numele firului -Thread-0
Suma = 118- Numele firului -Thread-1
Suma a doua fire = 180
Suma = 136- Numele firului -Thread-1
Suma = 24- Numele firului -Thread-0
Suma a doua fire = 254
Suma = 52- Numele firului -Thread-0
Suma = 142- Numele firului -Thread-1
Suma a doua fire = 76
Suma = 96- Numele firului -Thread-1
Suma = 94- Numele firului -Thread-0
Suma a doua fire = 238
Suma = 60- Numele firului -Thread-0
Suma = 178- Numele firului -Thread-1
Suma a doua fire = 154
Suma = 80- Numele firului -Thread-1
Suma = 94- Numele firului -Thread-0
Suma a doua fire = 258
Suma = 40- Numele firului -Thread-0
Suma = 116- Numele firului -Thread-1
Suma a doua fire = 134
Suma = 176- Numele firului -Thread-1
Suma = 50- Numele firului -Thread-0
Suma a doua fire = 292
Suma = 108- Numele firului -Thread-0
Suma = 108- Numele firului -Thread-1
Suma a doua fire = 158
Suma = 110- Numele firului -Thread-1
Suma = 90- Numele firului -Thread-0
Suma a doua fire = 218
Suma = 44- Numele firului -Thread-0
Suma = 94- Numele firului -Thread-1
Suma a doua fire = 134
Suma = 186- Numele firului -Thread-1
Suma = 42- Numele firului -Thread-0
Suma a doua fire = 280
Suma = 118- Numele firului -Thread-0
Suma = 84- Numele firului -Thread-1
Suma a doua fire = 160
Suma = 96- Numele firului -Thread-0
Suma = 88- Numele firului -Thread-1
Suma = 188- Numele firului -Thread-0
Suma a doua fire = 284
Suma = 110- Numele firului -Thread-0
Suma = 108- Numele firului -Thread-0
Suma a doua fire = 218
Suma = 80- Numele firului -Thread-0
Suma = 130- Numele firului -Thread-0
Suma a doua fire = 172
Suma a doua fire = 210
Suma = 106- Numele firului -Thread-1
Suma = 150- Numele firului -Thread-0
Suma = 88- Numele firului -Thread-1
Suma a doua fire = 194
Suma = 54- Numele firului -Thread-0
Suma = 96- Numele firului -Thread-1
Suma a doua fire = 204
Suma = 32- Numele firului -Thread-1
Suma a doua fire = 128
Suma = 122- Numele firului -Thread-1
Suma = 102- Numele firului -Thread-1
Suma a doua fire = 224
Suma = 36- Numele firului -Thread-1
Suma = 140- Numele firului -Thread-1
Suma a doua fire = 176
Suma = 124- Numele firului -Thread-1
Suma = 114- Numele firului -Thread-1
Suma = 112- Numele firului -Thread-0
Suma = 108- Numele firului -Thread-0
Suma a doua fire = 220
Suma = 108- Numele firului -Thread-0
Suma = 170- Numele firului -Thread-0
Suma a doua fire = 278
Suma = 162- Numele firului -Thread-0
Suma = 190- Numele firului -Thread-0
Suma a doua fire = 352
Suma = 104- Numele firului -Thread-0
Suma = 144- Numele firului -Thread-0
Suma a doua fire = 248
Suma = 90- Numele firului -Thread-0
Suma = 128- Numele firului -Thread-0
Suma a doua fire = 218
Suma = 110- Numele firului -Thread-0
Suma = 26- Numele firului -Thread-0
Suma a doua fire = 136
Suma = 110- Numele firului -Thread-0
Suma = 32- Numele firului -Thread-0
Suma a doua fire = 142
Suma = 70- Numele firului -Thread-0
Suma = 42- Numele firului -Thread-0
Suma a doua fire = 112
Suma = 78- Numele firului -Thread-0
Suma = 56- Numele firului -Thread-0
Suma a doua fire = 134
Suma = 116- Numele firului -Thread-0
Suma = 36- Numele firului -Thread-0
Suma a doua fire = 152
Suma = 86- Numele firului -Thread-0
Suma = 134- Numele firului -Thread-0
Suma a doua fire = 220
Suma = 172- Numele firului -Thread-0
Suma = 126- Numele firului -Thread-0
Suma a doua fire = 298
Suma = 92- Numele firului -Thread-0
Suma = 16- Numele firului -Thread-0
Suma a doua fire = 108
Suma = 110- Numele firului -Thread-0
Suma = 142- Numele firului -Thread-0
Suma a doua fire = 252
Suma = 50- Numele firului -Thread-0
Suma = 124- Numele firului -Thread-0
Suma a doua fire = 174
Suma = 82- Numele firului -Thread-0
Suma = 142- Numele firului -Thread-0
Suma a doua fire = 224
Suma = 18- Numele firului -Thread-0
Suma = 88- Numele firului -Thread-0
Suma a doua fire = 106
Suma = 86- Numele firului -Thread-0
Suma = 98- Numele firului -Thread-0
Suma a doua fire = 184
Suma = 84- Numele firului -Thread-0
Suma = 140- Numele firului -Thread-0
Suma a doua fire = 224
Suma = 48- Numele firului -Thread-0
Suma = 140- Numele firului -Thread-0
Suma a doua fire = 188
Suma = 66- Numele firului -Thread-0
Suma = 50- Numele firului -Thread-0
Suma a doua fire = 116
Suma = 60- Numele firului -Thread-0
Suma = 114- Numele firului -Thread-0
Suma a doua fire = 174
Suma = 98- Numele firului -Thread-0
Suma = 78- Numele firului -Thread-0
Suma a doua fire = 176
Suma = 98- Numele firului -Thread-0
Suma = 78- Numele firului -Thread-0
Suma a doua fire = 176
Suma = 98- Numele firului -Thread-0
Suma = 42- Numele firului -Thread-0
Suma a doua fire = 140
Suma = 120- Numele firului -Thread-0
Suma = 126- Numele firului -Thread-0
Suma a doua fire = 238
Suma a doua fire = 246
Suma = 164- Numele firului -Thread-1
Suma = 48- Numele firului -Thread-0
Suma = 78- Numele firului -Thread-1
Suma = 188- Numele firului -Thread-0
Suma a doua fire = 242
Suma a doua fire = 236
Suma = 146- Numele firului -Thread-0
Suma = 156- Numele firului -Thread-1
Suma = 156- Numele firului -Thread-0
Suma = 146- Numele firului -Thread-1
Suma a doua fire = 302
Suma a doua fire = 302
Suma = 78- Numele firului -Thread-0
Suma = 188- Numele firului -Thread-1
Suma = 48- Numele firului -Thread-1
Suma = 164- Numele firului -Thread-0
Suma a doua fire = 236
Suma a doua fire = 242
Suma = 126- Numele firului -Thread-1
Suma = 114- Numele firului -Thread-0
Suma = 120- Numele firului -Thread-1
Suma a doua fire = 246
Suma = 42- Numele firului -Thread-1
Suma = 98- Numele firului -Thread-1
Suma a doua fire = 140
Suma = 78- Numele firului -Thread-1
Suma = 98- Numele firului -Thread-1
Suma a doua fire = 176
Suma = 78- Numele firului -Thread-1
Suma = 98- Numele firului -Thread-1
Suma a doua fire = 176
Concluzie:
În cadrul acestei lucrări de laborator am studiat bazele și principiile de creare thread-urilor in Java.
Am creat doua fire de executie care in paralel executau conditiile propuse. Deci multithreading-ul este o
metoda buna de optimizare a unui program.

Bibliografie:
• https://docs.oracle.com/javase/tutorial/
• Cursul de PCD