Fire de execuție în Java

Previzualizare curs:

Extras din curs:

2.2 Creearea firelor de executie prin implementarea interfetei Runnable

import java.applet.* ;

import java.awt.* ;

public class TestThread extends Applet implements Runnable {

Thread mainThread ;

CntThread thread1, thread2;

public void start() {

if (mainThread == null) {

mainThread = new Thread(this);

mainThread.start();

}

}

public void run() {

thread1 = new MyThread(this, 2);

thread1.start();

thread2 = new MyThread(this, 3);

thread2.start();

}

public boolean keyDown( Event evt, int key ) {

thread1.stop();

thread2.stop();

return(true);

}

public void paint( Graphics g) {

g.drawString("Ruleaza 3 fire de executie", 10, 10);

g.drawString("Contor1 :"+thread1.counter, 10, 30);

g.drawString("Contor2 :"+thread2.counter, 10, 50);

}

}

//----------------------------------------------------------------------

class CntThread implements Runnable {

TestThread parent;

boolean loop;

Thread cntThread;

int step;

int counter;

public CntThread(TestThread p, int s) {

parent = p; //salvez instanta parinte

step = s;

}

public void start() {

if (cntThread == null) {

counter = 0;

cntThread = new Thread(this); //creez firul de executie pentru numarare

cntThread.start(); //lanseaza firul de executie

}

}

public void run() {

loop = true;

while (loop) {

counter += step;

parent.repaint();

try {Thread.sleep(1000);} //pauza de 1 sec

catch (InterruptedException e) {}

}

}

public void stop() {

loop = false;

}

}

2.3 Instantierea unui fir de executie : NEW

• mainThread = new Thread(this) ;

• myThread = new MyThreadClass();

2.4 Distrugerea unui fir de executie : STOP, DESTROY

myThread = new MyThreadClass();

myThread.start();

myThread.stop();

myThread = null;

Nu este necesara distrugerea explicita a unui fir de executie. Sistemul Java de colectare a gunoiului se ocupa de acest lucru. El poate fi fortat sa dezaloce resuresele alocate unui thread prin atribuirea cu null a variabilei care referea instanta firului de executie

3. Metode pentru firele de executie

• init() - apelata la prima lansare a unui fir de executie, locul unde se scrie codul de initializare

• start()- apelata la fiecare lansare, dupa operatiile de initializare

• stop()- apelata la terminarea firului de executie, contine codul de terminare a unui fir de executie

• run()- apelata de metoda start, contine corpul firului de executie

3. Denumirea firelor de executie

• Thread myThread = new Thread(this.”Nume fir”)

• myThread.getName()

• myThread.setName()

3. Sincronizarea firelor de executie

Un obiect sau o metoda pot fi accesate de mai multe fire de executie. Nu exista însa nici o garantie privind firul de executie care va avea acces la un obiect la un moment dat, ceea ce poate conduce la rezultate imprevizibile. Pentru a evita acest lucru se foloseste cuvântul cheie synchronized, care blocheaza un obiect pe perioada executarii unui bloc de cod.

public void incIndex() {

synchronized(index) {

//bloc de cod sincronizat, ob. index este blocat

index++;

System.out.println(“index = “ + index);

}

Download gratuit

Documentul este oferit gratuit,
trebuie doar să te autentifici in contul tău.

Structură de fișiere:
  • Fire de Executie in Java.doc
Alte informații:
Tipuri fișiere:
doc
Nota:
9/10 (4 voturi)
Nr fișiere:
1 fisier
Pagini (total):
4 pagini
Imagini extrase:
4 imagini
Nr cuvinte:
605 cuvinte
Nr caractere:
4 036 caractere
Marime:
6.98KB (arhivat)
Publicat de:
NNT 1 P.
Nivel studiu:
Facultate
Tip document:
Curs
Domeniu:
Calculatoare
Predat:
la facultate
Materie:
Calculatoare
Sus!