Rozdiel medzi Runnable a Thread

Obsah:

Rozdiel medzi Runnable a Thread
Rozdiel medzi Runnable a Thread

Video: Rozdiel medzi Runnable a Thread

Video: Rozdiel medzi Runnable a Thread
Video: Thread и Runnable. Java Professional. Урок 13 2024, November
Anonim

Kľúčový rozdiel – spustiteľné vs vlákno

Vykonávaný program je známy ako proces. Proces je možné rozdeliť do viacerých podprocesov. Napríklad Microsoft Word je proces. Zároveň kontroluje pravopisné chyby a gramatiku. To je podproces. Tieto podprocesy sú známe ako vlákna. Multithreading je proces vykonávania viacerých vlákien súčasne. Vláknové aplikácie môžu byť vytvorené pomocou rôznych programovacích jazykov. Runnable a Thread sú spojené s programovaním Java. V jazyku Java existujú dve metódy na vytvorenie vlákna implementáciou rozhrania Runnable alebo rozšírením triedy Thread. Pri implementácii Runnable môže mnoho vlákien zdieľať rovnaký objekt vlákna, zatiaľ čo v triede Extending Thread má každé vlákno priradený jedinečný objekt. To je kľúčový rozdiel medzi Runnable a Thread.

Čo je spustiteľné?

Vlákno prechádza cez niektoré stavy. „Nové“je začiatok životného cyklu vlákna. Keď metóda start() zavolá nové vlákno, stane sa spustiteľným. Ak plánovač vlákien vyberie vlákno, prejde do spusteného stavu. Vlákno čaká na stav, ak toto vlákno čaká na iné vlákno na vykonanie úlohy. Keď vlákno dokončí prácu, prejde do stavu ukončenia.

Vlákno je možné implementovať pomocou rozhrania Runnable. Pozrite si program nižšie.

Rozdiel medzi Runnable a Thread
Rozdiel medzi Runnable a Thread

Obrázok 01: Program Java na vytvorenie vlákna pomocou rozhrania Runnable

Podľa vyššie uvedeného programu trieda Runnable Demo implementuje rozhranie Runnable. Metóda run() sa nachádza v triede, ktorá implementuje rozhranie Runnable. Je to vstupný bod pre vlákno. Logika je v metóde run(). V hlavnom programe sa vlákno vytvorí definovaním objektu, ktorý vytvoril inštanciu z triedy Runnable Demo. Je to t1. Metóda start() sa volá pomocou t1.

Pozrite si program nižšie.

Rozdiel medzi Runnable a Thread_Obrázok 02
Rozdiel medzi Runnable a Thread_Obrázok 02

Obrázok 02: Java program na vytvorenie vlákna na vykonanie slučky implementáciou rozhrania Runnable

Podľa vyššie uvedeného príkladu trieda Runnable Demo implementuje rozhranie Runnable. Logika, ktorá sa má vykonať pomocou vlákna, je napísaná v metóde run(). V hlavnom programe sa vlákno vytvorí definovaním objektu, ktorý vytvoril inštanciu z triedy Runnable Demo. Je to t1. Potom sa metóda start() zavolá pomocou t1.

Čo je vlákno?

Ďalším spôsobom vytvorenia vlákna je rozšírenie triedy Thread. Pozostáva z troch krokov. Prvým je deklarovať triedu ako rozširujúcu triedu Thread. Potom by mala byť napísaná metóda run(). Má postupnosť krokov, ktoré by vlákno malo vykonať. Nakoniec sa vytvorí objekt vlákna a zavolá sa metóda start() na spustenie vykonávania vlákna. Pozrite si program nižšie.

Rozdiel medzi Runnable a Thread_Obrázok 03
Rozdiel medzi Runnable a Thread_Obrázok 03

Obrázok 03: Java program, ktorý rozširuje triedu vlákien

Podľa vyššie uvedeného programu trieda MyThread rozširuje triedu Thread. Prepíše metódu spustenia. Metóda run() obsahuje logiku, ktorú má vlákno vykonať. Je to vstupný bod do vlákna. Potom sa vytvorí objekt vlákna. Je to vlákno 1. Vlákno sa spúšťa pomocou metódy start(). Vykoná volanie metódy run().

Príklad programu dvoch tried rozširujúcich triedu Thread je nasledujúci.

Kľúčový rozdiel medzi Runnable a Thread
Kľúčový rozdiel medzi Runnable a Thread

Obrázok 04: Java program s dvoma triedami, ktoré rozširujú triedu vlákien

Podľa vyššie uvedeného programu trieda A aj B rozširujú triedu vlákien. Obe triedy majú svoju implementáciu metódy run(). Hlavné vlákno je to, ktoré vykonáva metódu main(). Pred zánikom hlavného vlákna vytvorí a spustí vlákno1 a vlákno2. V čase, keď hlavné vlákno dosiahne koniec hlavnej metódy, bežia paralelne tri vlákna. Neexistuje žiadne konkrétne poradie, v ktorom vlákna poskytujú výstup. Po spustení vlákna je ťažké rozhodnúť o poradí, ktoré vykonajú. Bežia nezávisle.

Aké sú podobnosti medzi spustiteľným a vláknom?

Obaja používajú na vytvorenie vlákna v jazyku Java

Aký je rozdiel medzi Runnable a Thread?

Runnable vs Thread

Runnable je rozhranie v jazyku Java na vytvorenie vlákna, ktoré umožňuje mnohým vláknam zdieľať rovnaký objekt vlákna. Vlákno je trieda v jazyku Java na vytvorenie vlákna, kde má každé vlákno priradený jedinečný objekt.
Pamäť
V režime Runnable viaceré vlákna zdieľajú rovnaký objekt, takže vyžadujú menej pamäte. V triede Thread vytvára každé vlákno jedinečný objekt, a preto vyžaduje viac pamäte.
Rozširujúce schopnosti
Po implementácii rozhrania Runnable môže rozšíriť triedu. Viacnásobné dedičstvo nie je v jazyku Java podporované. Po rozšírení triedy Thread nemôže rozšíriť žiadnu ďalšiu triedu.
Kód udržiavateľnosť
Spustiteľné rozhranie uľahčuje údržbu kódu. V triede vlákien je údržba časovo náročná.

Summary – Runnable vs Thread

Proces sa delí na viacero podprocesov, aby vykonával viacero úloh súčasne. Tieto podprocesy sú známe ako vlákna. Vytvorenie inštancie vlákna je možné vykonať implementáciou rozhrania Runnable alebo rozšírením triedy vlákien. Je ľahké rozšíriť triedu Thread, ale nie je to lepšia prax objektovo orientovaného programovania. Pri implementácii Runnable môže mnoho vlákien zdieľať rovnaký objekt vlákna, zatiaľ čo pri rozširovaní triedy Thread má každé vlákno priradený jedinečný objekt. To je rozdiel medzi Runnable a Thread. V triede Thread môže vytváranie viacerých objektov spotrebovať viac pamäte.

Stiahnite si PDF súbor Runnable vs Thread

Verziu tohto článku si môžete stiahnuť vo formáte PDF a použiť ju na offline účely podľa citácie. Stiahnite si verziu PDF tu Rozdiel medzi Runnable a Thread

Odporúča: