Diferență cheie – Rugabil vs Thread
Un program în execuție este cunoscut ca proces. Procesul poate fi împărțit în mai multe subprocese. De exemplu, Microsoft Word este un proces. În același timp, verifică greșeala de ortografie și gramatica. Acesta este un subproces. Aceste subprocese sunt cunoscute sub numele de fire. Multithreading este procesul de executare a mai multor fire simultan. Aplicațiile threaded pot fi construite folosind diferite limbaje 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. La implementarea Runnable, multe fire de execuție pot partaja același obiect de fir, în timp ce în clasa Extending Thread, fiecare thread are asociat un obiect unic. Aceasta este diferența cheie dintre Runnable și Thread.
Ce este Runnable?
Un fir trece prin unele state. „Noul” este începutul ciclului de viață al firului. După ce metoda start() apelează la un fir nou, acesta devine rulabil. Dacă programatorul de fire selectează firul de execuție, acesta trece la starea de rulare. Firul așteaptă starea dacă acel fir așteaptă ca un alt fir să execute o sarcină. După ce firul de execuție termină lucrarea, trece în starea de terminare.
Un fir poate fi implementat folosind interfața Runnable. Consultați programul de mai jos.
Figura 01: Program Java pentru a crea un fir folosind interfața Runnable
Conform programului de mai sus, clasa Runnable Demo implementează interfața Runnable. Metoda run() se află în clasa care implementează interfața Runnable. 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 Runnable Demo. Este t1. Metoda start() este apelată folosind t1.
Consultați programul de mai jos.
Figura 02: Program Java pentru a crea un fir pentru a executa o buclă, prin implementarea interfeței Runnable
Conform exemplului de mai sus, clasa Runnable Demo implementează interfața Runnable. Logica de executat folosind firul de execuție este scrisă în metoda run(). În programul principal, un fir este creat prin definirea unui obiect care a fost instanțiat din clasa Runnable Demo. Este t1. Apoi, metoda start() este apelată folosind t1.
Ce este Thread?
Ceal altă metodă de a crea un thread este extinderea clasei Thread. Este format din trei etape. Mai întâi este să declarați clasa ca extinzând clasa Thread. După aceea, ar trebui să fie scrisă metoda run(). Are secvența de pași pe care ar trebui să-i execute firul. În cele din urmă, obiectul thread este creat și metoda start() este apelată pentru a iniția execuția thread-ului. Consultați programul de mai jos.
Figura 03: Program Java care extinde clasa Thread
Conform programului de mai sus, clasa MyThread extinde clasa Thread. Ea suprascrie metoda de rulare. Metoda run() conține logica care trebuie executată de fir. Este punctul de intrare în fir. Apoi, obiectul fir este creat. Este thread1. Firul este pornit folosind metoda start(). Va executa un apel la metoda run().
Un exemplu de program de două clase care extinde clasa Thread este următorul.
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(). Firul principal este cel care execută metoda main(). Înainte ca firul principal să moară, acesta creează și pornește thread1 și thread2. În momentul în care 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ă decideți ordinea pe care o vor executa. Acestea funcționează independent.
Care sunt asemănările dintre Runnable și Thread?
Ambele folosesc pentru a crea un fir în Java
Care este diferența dintre rulabil și thread?
Runnable vs Thread |
|
Runnable este o interfață în Java pentru a crea un fir care permite mai multor fire să partajeze același obiect de fir. | Firul este o clasă în Java pentru a crea un fir în care fiecare fir are asociat un obiect unic. |
Memorie | |
În Runnable, mai multe fire au același obiect, așa că necesită mai puțină memorie. | În clasa Thread, fiecare fir creează un obiect unic, prin urmare necesită mai multă memorie. |
Extindere abilitate | |
După implementarea interfeței Runnable, poate extinde o clasă. | Moștenirile multiple nu sunt acceptate în Java. După extinderea clasei Thread, aceasta nu poate extinde nicio altă clasă. |
Menținerea codului | |
Interfața rulabilă face codul mai ușor de întreținut. | În clasa Thread, întreținerea necesită mult timp. |
Rezumat – Executabil 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 sub numele de fire. Instanțiarea unui fir se poate face prin implementarea interfeței Runnable sau prin extinderea clasei Thread. Este ușor să extinzi clasa Thread, dar nu este o practică mai bună de programare orientată pe obiecte. La implementarea Runnable, multe fire de execuție pot partaja același obiect de fir în timp ce în extinderea clasei Thread, fiecare thread are asociat un obiect unic. Aceasta este diferența dintre Runnable și Thread. În clasa Thread, crearea de mai multe obiecte 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 nota de citare. Vă rugăm să descărcați versiunea PDF aici Diferența dintre rulabil și thread