Rozdíl mezi Runnable a Thread

Obsah:

Rozdíl mezi Runnable a Thread
Rozdíl mezi Runnable a Thread

Video: Rozdíl mezi Runnable a Thread

Video: Rozdíl mezi Runnable a Thread
Video: Thread и Runnable. Java Professional. Урок 13 2024, Prosinec
Anonim

Klíčový rozdíl – spustitelný vs vlákno

Probíhající program se nazývá proces. Proces lze rozdělit na více podprocesů. Například Microsoft Word je proces. Zároveň kontroluje pravopisné chyby a gramatiku. To je podproces. Tyto podprocesy jsou známé jako vlákna. Multithreading je proces spouštění více vláken současně. Vláknové aplikace lze vytvářet pomocí různých programovacích jazyků. Runnable a Thread jsou spojeny s programováním Java. V Javě existují dva způsoby, jak vytvořit vlákno implementací rozhraní Runnable nebo rozšířením třídy Thread. Při implementaci Runnable může mnoho vláken sdílet stejný objekt vlákna, zatímco ve třídě Extending Thread má každé vlákno přidružen jedinečný objekt. To je klíčový rozdíl mezi Runnable a Thread.

Co je spustitelné?

Vlákno prochází některými stavy. „Nové“je začátek životního cyklu vlákna. Poté, co metoda start() zavolá nové vlákno, stane se spustitelné. Pokud plánovač vláken vybere vlákno, přejde do běžícího stavu. Vlákno čeká na stav, pokud toto vlákno čeká na jiné vlákno, aby provedlo úlohu. Poté, co vlákno dokončí práci, přejde do stavu ukončení.

Vlákno lze implementovat pomocí rozhraní Runnable. Viz níže uvedený program.

Rozdíl mezi Runnable a Thread
Rozdíl mezi Runnable a Thread

Obrázek 01: Java Program pro vytvoření vlákna pomocí Runnable interface

Podle výše uvedeného programu třída Runnable Demo implementuje rozhraní Runnable. Metoda run() je uvnitř třídy, která implementuje rozhraní Runnable. Je to vstupní bod pro vlákno. Logika je v metodě run(). V hlavním programu je vlákno vytvořeno definováním objektu, který vytvořil instanci z třídy Runnable Demo. Je to t1. Metoda start() se volá pomocí t1.

Viz níže uvedený program.

Rozdíl mezi Runnable a Thread_Obrázek 02
Rozdíl mezi Runnable a Thread_Obrázek 02

Obrázek 02: Java program pro vytvoření vlákna pro provedení smyčky implementací rozhraní Runnable

Podle výše uvedeného příkladu třída Runnable Demo implementuje rozhraní Runnable. Logika, která se má provést pomocí vlákna, je zapsána v metodě run(). V hlavním programu je vlákno vytvořeno definováním objektu, který vytvořil instanci z třídy Runnable Demo. Je to t1. Poté se zavolá metoda start() pomocí t1.

Co je vlákno?

Dalším způsobem vytvoření vlákna je rozšíření třídy Thread. Skládá se ze tří kroků. První je deklarovat třídu jako rozšiřující třídu Thread. Poté by měla být napsána metoda run(). Má sekvenci kroků, které by vlákno mělo provést. Nakonec je vytvořen objekt vlákna a je zavolána metoda start() k zahájení provádění vlákna. Viz níže uvedený program.

Rozdíl mezi Runnable a Thread_Obrázek 03
Rozdíl mezi Runnable a Thread_Obrázek 03

Obrázek 03: Java program, který rozšiřuje třídu vláken

Podle výše uvedeného programu třída MyThread rozšiřuje třídu Thread. Přepíše metodu běhu. Metoda run() obsahuje logiku, kterou má vlákno provést. Je to vstupní bod do vlákna. Poté je vytvořen objekt vlákna. Je to vlákno 1. Vlákno se spouští pomocí metody start(). Provede volání metody run().

Příklad programu dvou tříd rozšiřujících třídu Thread je následující.

Klíčový rozdíl mezi Runnable a Thread
Klíčový rozdíl mezi Runnable a Thread

Obrázek 04: Java program se dvěma třídami, které rozšiřují třídu vláken

Podle výše uvedeného programu třída A i B rozšiřují třídu Thread. Obě třídy mají svou implementaci metody run(). Hlavní vlákno je to, které provádí metodu main(). Než hlavní vlákno zemře, vytvoří a spustí vlákno1 a vlákno2. V době, kdy hlavní vlákno dosáhlo konce hlavní metody, běží paralelně tři vlákna. Neexistuje žádné konkrétní pořadí, ve kterém vlákna poskytují výstup. Jakmile je vlákno spuštěno, je těžké rozhodnout, v jakém pořadí vykonají. Běží nezávisle.

Jaké jsou podobnosti mezi spustitelným a vláknem?

Oba používají k vytvoření vlákna v Javě

Jaký je rozdíl mezi Runnable a Thread?

Runable vs Thread

Runnable je rozhraní v Javě pro vytvoření vlákna, které umožňuje mnoha vláknům sdílet stejný objekt vlákna. Vlákno je třída v Javě k vytvoření vlákna, kde má každé vlákno přidružen jedinečný objekt.
Paměť
V režimu Runnable sdílí několik vláken stejný objekt, takže vyžadují méně paměti. Ve třídě Thread každé vlákno vytváří jedinečný objekt, a proto vyžaduje více paměti.
Rozšiřující schopnosti
Po implementaci rozhraní Runnable může rozšířit třídu. Vícenásobná dědičnost není v Javě podporována. Po rozšíření třídy Thread nelze rozšířit žádnou jinou třídu.
Údržba kódu
Spustitelné rozhraní usnadňuje údržbu kódu. Ve třídě vláken je údržba časově náročná.

Shrnutí – spustitelné vs vlákno

Proces je rozdělen do několika dílčích procesů, které provádějí více úkolů současně. Tyto podprocesy jsou známé jako vlákna. Instanci vlákna lze provést implementací rozhraní Runnable nebo rozšířením třídy Thread. Je snadné rozšířit třídu Thread, ale není to lepší praktika objektově orientovaného programování. Při implementaci Runnable může mnoho vláken sdílet stejný objekt vlákna, zatímco při rozšiřování třídy Thread má každé vlákno přidružen jedinečný objekt. To je rozdíl mezi Runnable a Thread. Ve třídě Thread může vytváření více objektů spotřebovat více paměti.

Stáhněte si PDF Runnable vs Thread

Můžete si stáhnout PDF verzi tohoto článku a použít ji pro offline účely podle citace. Stáhněte si prosím PDF verzi zde Rozdíl mezi Runnable a Thread

Doporučuje: