Utilizarea firelor de executie în Java si C#

Similar documents
Titlul lucrării propuse pentru participarea la concursul pe tema securității informatice

Versionare - GIT ALIN ZAMFIROIU

Metrici LPR interfatare cu Barix Barionet 50 -

Ghid identificare versiune AWP, instalare AWP şi verificare importare certificat în Store-ul de Windows

2. Setări configurare acces la o cameră web conectată într-un router ZTE H218N sau H298N

Reflexia şi refracţia luminii. Aplicaţii. Valerica Baban

Procesarea Imaginilor

Structura și Organizarea Calculatoarelor. Titular: BĂRBULESCU Lucian-Florentin

Mecanismul de decontare a cererilor de plata

Proiectarea Sistemelor Software Complexe

ARBORI AVL. (denumiti dupa Adelson-Velskii si Landis, 1962)

Lucrarea Nr.1. Sisteme de operare. Generalitati

Documentaţie Tehnică

Propuneri pentru teme de licență

Textul si imaginile din acest document sunt licentiate. Codul sursa din acest document este licentiat. Attribution-NonCommercial-NoDerivs CC BY-NC-ND

Auditul financiar la IMM-uri: de la limitare la oportunitate

Semnale şi sisteme. Facultatea de Electronică şi Telecomunicaţii Departamentul de Comunicaţii (TC)

La fereastra de autentificare trebuie executati urmatorii pasi: 1. Introduceti urmatoarele date: Utilizator: - <numarul dvs de carnet> (ex: "9",

Modalitǎţi de clasificare a datelor cantitative

Aspecte controversate în Procedura Insolvenţei şi posibile soluţii

Figura x.1 Ecranul de pornire al mediului de dezvoltare

Subiecte Clasa a VI-a

Arbori. Figura 1. struct ANOD { int val; ANOD* st; ANOD* dr; }; #include <stdio.h> #include <conio.h> struct ANOD { int val; ANOD* st; ANOD* dr; }

METODE DE EVALUARE A IMPACTULUI ASUPRA MEDIULUI ŞI IMPLEMENTAREA SISTEMULUI DE MANAGEMENT DE MEDIU

Managementul Proiectelor Software Metode de dezvoltare

Olimpiad«Estonia, 2003

MS POWER POINT. s.l.dr.ing.ciprian-bogdan Chirila

Update firmware aparat foto

Mods euro truck simulator 2 harta romaniei by elyxir. Mods euro truck simulator 2 harta romaniei by elyxir.zip

Nume şi Apelativ prenume Adresa Număr telefon Tip cont Dobânda Monetar iniţial final

Universitatea George Bariţiu, Braşov

INSTRUMENTE DE MARKETING ÎN PRACTICĂ:

Excel Advanced. Curriculum. Școala Informală de IT. Educație Informală S.A.

EN teava vopsita cu capete canelate tip VICTAULIC

The First TST for the JBMO Satu Mare, April 6, 2018

MANAGEMENTUL CALITĂȚII - MC. Proiect 5 Procedura documentată pentru procesul ales

Tema 1 - Transferuri de date DMA intr-o arhitectura de tip Cell

INTERPRETOARE DE COMENZI

Updating the Nomographical Diagrams for Dimensioning the Concrete Slabs

SAG MITTIGATION TECHNICS USING DSTATCOMS

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

CAIETUL DE SARCINI Organizare evenimente. VS/2014/0442 Euro network supporting innovation for green jobs GREENET

Class D Power Amplifiers

1. Creaţi un nou proiect de tip Windows Forms Application, cu numele MdiExample.

Managementul referinţelor cu

Laborator 1. Programare declarativă. Programare logică. Prolog. SWI-Prolog

9. Memoria. Procesorul are o memorie cu o arhitectură pe două niveluri pentru memoria de program și de date.

VIRTUAL INSTRUMENTATION IN THE DRIVE SUBSYSTEM MONITORING OF A MOBIL ROBOT WITH GESTURE COMMANDS

REVISTA NAŢIONALĂ DE INFORMATICĂ APLICATĂ INFO-PRACTIC

Itemi Sisteme de Operare

O alta abordare in calculul distribuit este memoria virtuală distribuită (Distributed Shared Memory DSM). Din nefericire maşinile paralele cu memorie

Lucrarea de laborator nr. 4

The driving force for your business.

PROIECT. La Baze de date. Evidența activității pentru o firmă IT. Îndrumător: ș. l. dr. ing. Mirela Danubianu. Efectuat de: Grigoriev Sergiu gr.

Subiectele pentru proba practică din cadrul examenului de Paradigme de Programare Sesiunea iunie 2015

Metoda de programare BACKTRACKING

USING SERIAL INDUSTRIAL ROBOTS IN CNC MILLING PROCESESS

INFORMAȚII DESPRE PRODUS. FLEXIMARK Stainless steel FCC. Informații Included in FLEXIMARK sample bag (article no. M )

Printesa fluture. Мобильный портал WAP версия: wap.altmaster.ru

GHID DE TERMENI MEDIA

Behavioral design patterns (comportamentale) ALIN ZAMFIROIU

Calculatoare Numerice II Interfaţarea unui dispozitiv de teleghidare radio cu portul paralel (MGSH Machine Guidance SHell) -proiect-

Posibilitati de realizare a transferurilor de date

ACTA TECHNICA NAPOCENSIS

Transmiterea datelor prin reteaua electrica

Implementarea paralelismului la nivel de instructiune în microprocesoarele superscalare

Ce pot face pe hi5? Organizare si facilitati. Pagina de Home

Semnare digitală configurări și proceduri de lucru Manual de utilizare

(Text cu relevanță pentru SEE)

6. Excepţii şi aserţiuni. 6. Excepţii şi aserţiuni

ANTICOLLISION ALGORITHM FOR V2V AUTONOMUOS AGRICULTURAL MACHINES ALGORITM ANTICOLIZIUNE PENTRU MASINI AGRICOLE AUTONOME TIP V2V (VEHICLE-TO-VEHICLE)

INTEROGĂRI ÎN SQL SERVER

USING MOBILE AGENTS FOR INFORMATION RETRIEVAL IN B2B SYSTEMS

O ALTERNATIVĂ MODERNĂ DE ÎNVĂŢARE

MODELUL UNUI COMUTATOR STATIC DE SURSE DE ENERGIE ELECTRICĂ FĂRĂ ÎNTRERUPEREA ALIMENTĂRII SARCINII

Multicore Multiprocesoare Cluster-e

SPEED CONTROL OF DC MOTOR USING FOUR-QUADRANT CHOPPER AND BIPOLAR CONTROL STRATEGY

Software Process and Life Cycle

A Compared Aproach: ASP versus PHP

2. Setări configurare acces la o cameră web conectată într-un echipament HG8121H cu funcție activă de router

A NOVEL ACTIVE INDUCTOR WITH VOLTAGE CONTROLLED QUALITY FACTOR AND SELF-RESONANT FREQUENCY

D în această ordine a.î. AB 4 cm, AC 10 cm, BD 15cm

ON THE TRANSIENTS OPTIMIZATION AND THE POWER FACTOR CORRECTION OF THE STATIC CONVERTERS

Evoluția pieței de capital din România. 09 iunie 2018

ARE THE STATIC POWER CONVERTERS ENERGY EFFICIENT?

Metoda BACKTRACKING. prof. Jiduc Gabriel

Universitatea Politehnica Bucureşti Facultatea de Automatică şi Calculatoare Departamentul de Automatică şi Ingineria Sistemelor LUCRARE DE LICENŢĂ

Dispozitive Electronice şi Electronică Analogică Suport curs 02 Metode de analiză a circuitelor electrice. Divizoare rezistive.

2. ALOCAREA RESURSELOR UTILIZÂND SISTEMUL INFORMATIC MICRSOFT PROJECT 2003

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

Lucrarea de laborator nr. 2 - Applet-uri şi aplicaţii Java care lucrează cu obiecte. Breviar teoretic. Obiecte

Grafuri bipartite. Lecție de probă, informatică clasa a XI-a. Mihai Bărbulescu Facultatea de Automatică și Calculatoare, UPB

Ghid pentru configurarea şi utilizarea aplicaţiei clicksign Demo

Sisteme distribuite teorie 5. Semantica esecurilor în RPC. Comunicatie în grup

D.C. DRIVE SYSTEM USING FOUR-QUADRANT CHOPPER

CERERI SELECT PE MAI MULTE TABELE

Buletinul AGIR nr. 3/2012 iunie-august. Assis. Eng. Ciprian AFANASOV PhD. University "Ştefan cel Mare" Suceava

R O M Â N I A CURTEA CONSTITUŢIONALĂ

La fel ca şi noţiunile de abstractizare şi încapsulare, ierarhizarea este un concept fundamental

TWITRENDS SISTEM DE PROCESARE A STREAM-URILOR ÎN TIMP REAL ÎN ERA BIG DATA

Transcription:

Revista Informatica Economica, nr. 1(29)/2004 77 Utilizarea firelor de executie în Java si C# Lect.dr. Paul POCATILU Catedra de Informatica Economica, A.S.E. Bucuresti Using multithreading programming is very useful in many applications and it can solve different problems. In this paper are presented the main characteristics of the multithreading and how it can be used in two object oriented programming languages, Java and C#. Keywords: process, thread, synchronization, multitasking. I ntroducere Un proces consta dintr-unul sau mai multe fire de executie, date si alte resurse (figura 1). Fiecare proces are un fir principal de executie, asociat aplicatiei. Firele de executie sunt unitati independente de executie si reprezinta o cale într-un program. Un fir de executie are alocata o stiva, registrii mic roprocesorului si o intrare în lista de executie a componentei de alocare a executiilor. Firele de executie partajeaza toate resursele procesului, cum ar fi fisiere le deschise sau memoria alocata dinamic. Fiecare fir de executie lucreaza independent si nu intra în contact cu alte fire de executie, decât în cazul în care acest lucru este realizat în mod specific de catre programator. În acest caz, daca sunt partajate resurse comune, este necesara coordonarea executiei firelor prin intermediul semafoarelor sau a altor mecanisme de comunicare între procese (mutex, sectiuni critice). a) b) Fig. 1. Proces cu un singur fir de executie a) si cu mai multe fire de executie b) Un fir se executa în momentul în care componenta de alocare a executiilor da controlul acestuia. Predarea controlului unui fir de executie se realizeaza dupa un anumit inte r- val de timp, pentru o durata de timp limitata. De asemenea, fiecare fir de executie are asociata o prioritate de care se tine cont în momentul în care se da controlul executiei, firele de executie cu prioritate mare fiind exec u- tate înaintea celor cu prioritate mica. Utilizarea firelor de executie este necesara în diverse aplicatii. Firele de executie sunt utilizate în aplicatii care necesita prelucrari de lunga durata, aplicatii care urmaresc anumite evenimente si aplicatii de tip GUI care ofera posibilitatea întreruperii unei actiuni [FERG02]. De exemplu încarcarea unui document este realizata de un fir de executie si nu firul principal, ceea ce permite utilizatorului interactiunea cu fereastra care a lansat firul de executie. Limbajele Java si C# suporta firele mult iple de executie. Pentru exemplificare este creata o aplicatie de tip consola în limbajele Java si C# în care se utilizeaza doua fire de executie. Un fir de executie afiseaza un mesaj la consola, care contine numele firului de executie. Oprirea executiei aplicatiei se realizeaza tastând Ctrl+C. Implementarea firelor de executie în Java Limbajul Java ofera doua clase (Thread si ThreadGroup) si o interfata (Runnable ) pentru dezvoltarea de aplicatii cu fire multiple de

78 Revista Informatica Economica, nr. 1(29)/2004 executie. Clasa Thread implementeaza la rândul ei interfata Runnable. Utilizarea clasei Thread presupune derivarea unei clase din aceasta. În cadrul clasei der i- vate, se redefineste metoda run definita în clasa de baza, metoda care contine logica firului de executie. Principalele metode existente în clasa Thread sunt: start lansarea în executie a firului; run metoda care se va executa la pornirea firului; yield cedeaza executia altor fire concurente; setpriority stabilirea prioritatii firului de executie cu valori cuprinse între Thread.MIN_PRIORITY si Thread.MAX_PRIORITY; destroy utilizata pentru terminarea executiei firului fara eliberarea resurselor ocupate de firul de executie; sleep opreste executia firului curent pe o durata precizata ca parametru, masurata în milisecunde; join asteapta ca firul curent sa se termine. Metodele stop, suspend si resume sunt depreciate, având în vedere faptul ca prin utilizarea acestora pot sa apara blocari ale firelor de executie. În listingul 1 este prezentat codul sursa Java al aplicatiei implementata folosind clasa FM derivata din clasa Thread. Listing 1 Java class FM extends Thread { private String nume=null; FM(String n) { super(); nume=n; public void run() { while(true) { System.out.println("Firul "+nume); try { sleep(10); catch(interruptedexception ie) { ie.printstacktrace(); public class TestFire { public static void main(string arg[]) { FM fm1=new FM("Unu"); FM fm2=new FM("Doi"); fm1.start(); fm2.start(); A doua posibilitate presupune implementarea interfetei Runnable în cadrul clasei si definirea metodei run. Din listingul 2 se observa class FM implements Runnable { private String nume=null; private Thread fm=null; modalitatea de creare a firelor de executie prin implementarea interfetei Runnable. Listing 2 Java

Revista Informatica Economica, nr. 1(29)/2004 79 FM(String n) {super(); nume=n; public void start() { fm=new Thread(this,nume); fm.start(); public void run() { Thread th=thread.currentthread(); while(true) { System.out.println("Firul "+nume); try { th.sleep(10); catch(interruptedexception ie) { ie.printstacktrace(); public class TestFire { public static void main(string arg[]) { FM fm1=new FM("Unu"); FM fm2=new FM("Doi"); fm1.start(); fm2.start(); Alegerea unei metode sau a alteia se face în primul rând în functie de necesitatea mostenirii multiple. Astfel, daca o clasa utilizeaza fire de executie si este derivata dintr-o alta clasa, neexistând posibilitatea mostenirii multiple, se foloseste interfata Runnable. În figura 2 sunt prezentate cele mai importante stari în care se poate afla un fir de executie. Terminat Nou start Executie Blocat Pregatit Fig. 2. Starile unui fir de executie Prin intermediul clasei ThreadGroup este posibila utilizarea mai multor obiecte de tip Thread ca un tot unitar. Pentru sincronizarea firelor de executie se utilizeaza atributul syncronized în momentul în care se acceseaza o resursa comuna. Fire de executie în C# Spatiul de nume System.Threading contine clasele pentru implementarea de aplicatii.net care sa utilizeze fire de executie multiple si astfel sa fie dezvoltate aplicatii concurente.

80 Revista Informatica Economica, nr. 1(29)/2004 Biblioteca de clase Microsoft.NET furnizeaza clasa Thread pentru utilizarea firelor de executie. Clasa Thread are atributul sealed, ceea ce nu permite derivarea de noi clase din aceasta. Clasa Thread furnizeaza o serie de metode de operare asupra firelor de executie, dintre care cele mai importante sunt prezentate în continuare. Metoda Start Interrupt Suspend Resume Join Sleep Constructorul clasei Thread este utilizat pe n- tru a initializa firul de executie. Parametrul constructorului este un delegat de tipul ThreadStart, prin intermediul caruia se transmite adresa functiei corespunzatoare firului de executie. În tabelul 1 sunt prezentate principalele metode din clasa Thread. Tabelul 1 Principalele metode ale clasei Thread Descriere începe executie unui fir întrerupe executia unui fir suspenda executia unui fir continua executia unui fir suspendat asteapta un alt fir opreste executia firului pe o durata de timp determinata Pentru a utiliza clasa Thread se creeaza o clasa prin care este implementat comportamentul firului de executie. O metoda a clasei este transmisa ca parametru constructorului firului de executie prin intermediul unui delegat de tip ThreadStart. În listingul 3 este using System; using System.Threading; prezentata implementarea în C# a exemplului prezentat la începutul articolului. Metoda Run din clasa FM executa un ciclu infinit în care este afisat numele firului de executie c u- rent. Listing 3 C# class FM { string nume; public FM(string n) { nume=n; public void Run() { while(true) { Console.WriteLine("Firul {0",nume); Thread.Sleep(10); class TestFire { static void Main() { FM ofm1=new FM("Unu"); FM ofm2=new FM("Doi"); Thread fm1=new Thread(new ThreadStart(ofm1.Run)); Thread fm2=new Thread(new ThreadStart(ofm2.Run)); fm1.start(); fm2.start(); Pentru sincronizarea firelor de executie sunt disponibile în spatiul de nume System. Threading o serie de clase (Monitor, Mutex). Concluzii Prin intermediul firelor de executie sunt executate simultan mai multe secvente de cod.

Revista Informatica Economica, nr. 1(29)/2004 81 Aplicabilitate firelor de executie este vasta. Crearea si utilizarea firelor de executie multiple trebuie realizata cu atentie, având în vedere posibilitatile de aparitie a blocarilor în cazul partajarii resurselor. Tratarea aspectelor privind sincronizarea firelor de executie necesita o abordare separata. Bibliografie [ECKE00] Eckel, Bruce Thinking in Java Second Edition, Prentice Hall, New Jersey, 2000 [FERG02] Ferguson, Jeff, Patterson, Brian, Beres, Jason, Boutquin, Pierre, Gupta, Meeta C# Bible, Wiley Publishing, Inc., Indianapolis, 2002 [LAFO99] Lafore, Robert, Waite, Mitchell Structuri de date si algoritmi în Java, Editura Teora, Bucuresti, 1999 [PUVV03] Jawahar Puvvala, Alok Pota.NET for Java Developers: Migrating to C#, Addison Wesley, 2003 [ROTA96] Rotariu, Eugen Limbajul Java, Editura Computer Press Agora, Tîrgu Mures, 1996 [TANA03] Tanasa, Stefan, Olaru, Cristian, Andrei, Stefan Java de la 0 la expert, Editura Polirom, Iasi, 2003 http://java.sun.com http://msdn.microsoft.com