Diferența dintre Runnable și Thread

Diferența cheie - Runnable vs Thread
 

Un program în execuție este cunoscut ca un proces. Procesul poate fi împărțit în mai multe subprocese. De exemplu, Microsoft Word este un proces. În același timp, verifică greșelile de ortografie și gramatica. Acesta este un subproces. Aceste subprocese sunt cunoscute ca fire. Multithreading este procesul de execuție simultană a mai multor fire. Aplicațiile cu filet pot fi construite utilizând diferite limbi de programare. Runnable și Thread sunt asociate cu programarea Java. Există două metode în Java pentru a crea un fir prin implementarea unei interfețe Runnable sau extinderea clasei Thread. Când se implementează Runnable, multe fire pot partaja același obiect thread în timp ce în clasa Extindere Thread, fiecare fir are un obiect unic asociat cu acesta. Asta este diferența cheie între Runnable și Thread.

CUPRINS

1. Prezentare generală și diferență cheie
2. Ce este Runnable
3. Ce este Thread
4. Asemănări între Runnable și Thread
5. Comparație comparativă comparativă - Runnable vs Thread în formă tabulară
6. rezumat

Ce este Runnable?

Un fir trece prin unele state. "Nou" este începutul ciclului de viață al firului. După ce metoda start () apelează un fir nou, acesta devine funcțional. Dacă planificatorul de fire selectează firul, acesta trece în starea de funcționare. Firul așteaptă starea dacă acel fir așteaptă un alt fir pentru a efectua o sarcină. După ce firul finalizează lucrarea, merge la starea de terminare.

Un fir poate fi implementat utilizând interfața Runnable. Consultați programul de mai jos.

Figura 01: Programul Java pentru a crea un fir utilizând interfața Runnable

Conform programului de mai sus, clasa Runnable Demo implementează interfața Runnable. Metoda run () este în interiorul clasei care implementează interfața Runnable. Acesta este punctul de intrare pentru fir. Logica este în metoda run (). În programul principal, un fir este creat prin definirea unui obiect care a fost instanțiat din clasa demonstrativă Runnable. Este t1. Metoda start () se numește folosind t1.

Consultați programul de mai jos.

Figura 02: Programul Java pentru a crea un fir pentru a executa o buclă, prin implementarea interfeței Runnable

În conformitate cu exemplul de mai sus, clasa Runnable Demo implementează interfața Runnable. Logica care se execută folosind firul este scrisă în metoda run (). În programul principal, un fir este creat prin definirea unui obiect care a fost instanțiat din clasa demonstrativă Runnable. Este t1. Apoi, metoda start () este apelată folosind t1.

Ce este Thread?

Cealaltă metodă de a crea un fir este extinderea clasei Thread. Se compune din trei etape. Primul este să declare clasa ca extinderea clasei Thread. Ulterior, trebuie să scrieți metoda run (). Are secvența de pași pe care firul ar trebui să le execute. În cele din urmă, obiectul thread este creat și metoda start () este chemată să inițieze execuția firului. Consultați programul de mai jos.

Figura 03: Programul Java care extinde clasa Thread

În conformitate cu programul de mai sus, clasa MyThread extinde clasa Thread. Acesta suprascrie metoda de rulare. Metoda run () conține logica care trebuie executată de fir. Acesta este punctul de intrare la fir. Apoi obiectul thread este creat. Este thread1. Firele sunt pornite folosind metoda start (). Acesta va executa un apel pentru a rula () metoda.

Un exemplu de program de două clase care extind clasa Thread este după cum urmează.

Figura 04: Program Java cu două clase care extind clasa Thread

Conform programului de mai sus, ambele clase A și B extind clasa Thread. Ambele clase au implementarea metodei run (). Principalul thread este cel care execută metoda principal (). Înainte ca firul principal să moară, acesta creează și începe thread1 și thread2. Până când firul principal a ajuns la sfârșitul metodei principale, trei fire rulează în paralel. Nu există o ordine specifică în care firele să dea rezultate. Odată ce firul este pornit este greu să se decidă ordinea pe care o vor executa. Ei rulează independent.

Care sunt asemănările dintre Runnable și Thread?

  • Ambele utilizează pentru a crea un fir în Java.

Care este diferența dintre Runnable și Thread?

Runnable vs Thread

Runnable este o interfață în Java pentru a crea un fir care permite mai multor fire să împartă același obiect de fir. Firul este o clasă în Java pentru a crea un fir în care fiecare fir are un obiect unic asociat cu acesta.
 Memorie
În Runnable, firele multiple partajează același obiect, deci necesită mai puțină memorie. În clasa Thread, fiecare fir creează un obiect unic, prin urmare, necesită mai multă memorie.
Extinzând abilitatea
După implementarea interfeței Runnable, poate extinde o clasă. Moștenirile multiple nu sunt acceptate în Java. După extinderea clasei Thread, nu poate extinde nici o clasă.
 Codul Mentenabilitate
Interfața care rulează face codul mai ușor de întreținut. În clasa Thread, menținerea este consumatoare de timp.

Rezumat - Runnable vs Thread 

Un proces este împărțit în mai multe subprocese pentru a efectua mai multe sarcini în același timp. Aceste subprocese sunt cunoscute ca fire. Instanțarea unui fir poate fi realizată prin implementarea interfeței Runnable sau prin extinderea clasei Thread. Este ușor să extindeți clasa Thread, dar nu este o practică mai bună de programare orientată pe obiecte. Când se implementează Runnable, multe fire pot partaja același obiect thread în timp ce se extind în clasa Thread fiecare fir are un obiect unic asociat cu acesta. Aceasta este diferența între Runnable și Thread. În clasa Thread, crearea de obiecte multiple poate consuma mai multă memorie.

Descărcați PDF-ul Runnable vs. Thread

Puteți descărca versiunea PDF a acestui articol și o puteți utiliza în scopuri offline conform notei de citare. Descărcați versiunea PDF aici Diferența dintre Runnable și Thread

Referinţă:

1.tutorialspoint.com. "Java Multithreading". Punctul, Disponibil aici 
2.Pramodbablad. "Extinderea implementărilor Thread Vs executate în Java". Conceptul Java al Zilei, 11 noiembrie 2016. Disponibil aici
3.Cum se creează un thread în Java Multithreading | Core Java Tutorial | Studytonight. Disponibil aici