Ključna razlika – Runnable vs Thread
Program u izvođenju poznat je kao proces. Proces se može podijeliti na više podprocesa. Na primjer, Microsoft Word je proces. U isto vrijeme, provjerava pravopisnu grešku i gramatiku. To je podproces. Ovi potprocesi poznati su kao niti. Multithreading je proces izvršavanja više niti istovremeno. Nitne aplikacije mogu se izgraditi pomoću različitih programskih jezika. Runnable i Thread povezani su s Java programiranjem. U Javi postoje dvije metode za stvaranje niti implementacijom Runnable sučelja ili proširenjem klase Thread. Prilikom implementacije Runnable-a, mnoge niti mogu dijeliti isti objekt niti dok u klasi Extending Thread svaka nit ima jedinstveni objekt povezan s njom. To je ključna razlika između Runnable i Thread.
Što je Runnable?
Nit prolazi kroz neka stanja. "Novo" je početak životnog ciklusa niti. Nakon što metoda start() pozove novu nit, ona postaje pokrenuta. Ako planer niti odabere nit, ona prelazi u stanje pokretanja. Nit čeka stanje ako ta nit čeka drugu nit da izvrši zadatak. Nakon što nit završi posao, prelazi u stanje završetka.
Nit se može implementirati korištenjem Runnable sučelja. Pogledajte donji program.
Slika 01: Java program za stvaranje niti pomoću Runnable sučelja
Prema gornjem programu, klasa Runnable Demo implementira Runnable sučelje. Metoda run() je unutar klase koja implementira Runnable sučelje. To je ulazna točka za nit. Logika je u run() metodi. U glavnom programu, nit se stvara definiranjem objekta koji je instanciran iz klase Runnable Demo. To je t1. Metoda start() se poziva pomoću t1.
Pogledajte donji program.
Slika 02: Java program za stvaranje niti za izvođenje petlje, implementacijom Runnable sučelja
Prema gornjem primjeru, klasa Runnable Demo implementira Runnable sučelje. Logika za izvršavanje pomoću niti zapisana je u metodi run(). U glavnom programu, nit se stvara definiranjem objekta koji je instanciran iz klase Runnable Demo. To je t1. Zatim se poziva metoda start() koristeći t1.
Što je nit?
Druga metoda stvaranja niti je proširenje klase Thread. Sastoji se od tri koraka. Prvo je deklarirati klasu kao proširenje klase Thread. Nakon toga treba napisati metodu run(). Ima niz koraka koje nit treba izvršiti. Naposljetku, kreira se objekt niti i poziva se metoda start() da započne izvršavanje niti. Pogledajte donji program.
Slika 03: Java program koji proširuje klasu Thread
Prema gornjem programu, klasa MyThread proširuje klasu Thread. Nadjačava metodu pokretanja. Metoda run() sadrži logiku koju treba izvršiti nit. To je ulazna točka u nit. Zatim se kreira objekt niti. To je nit1. Nit se pokreće metodom start(). Izvršit će poziv za metodu run().
Primjer programa od dvije klase koje proširuju klasu Thread je kako slijedi.
Slika 04: Java program s dvije klase koje proširuju klasu Thread
Prema gornjem programu, i klasa A i B proširuju klasu niti. Obje klase imaju svoju implementaciju metode run(). Glavna nit je ta koja izvršava metodu main(). Prije nego što glavna nit umre, ona stvara i pokreće thread1 i thread2. Dok glavna nit dođe do kraja glavne metode, tri niti se izvode paralelno. Ne postoji određeni redoslijed kojim niti daju izlaz. Nakon što se nit pokrene, teško je odlučiti koji će redoslijed izvršiti. Oni rade samostalno.
Koje su sličnosti između Runnable i Thread?
Oboje se koristi za stvaranje niti u Javi
Koja je razlika između Runnable i Thread?
Runnable vs Thread |
|
Runnable je sučelje u Javi za stvaranje niti koje omogućuje mnogim nitima da dijele isti objekt niti. | Nit je klasa u Javi za stvaranje niti gdje svaka nit ima jedinstveni objekt pridružen sebi. |
Memorija | |
U Runnableu, više niti dijeli isti objekt, pa je potrebno manje memorije. | U klasi Thread, svaka nit stvara jedinstveni objekt, stoga zahtijeva više memorije. |
Proširenje sposobnosti | |
Nakon implementacije Runnable sučelja, može proširiti klasu. | Višestruko nasljeđivanje nije podržano u Javi. Nakon proširenja klase Thread, ne može proširiti niti jednu drugu klasu. |
Mogućnost održavanja koda | |
Runnable sučelje čini kod lakšim za održavanje. | U klasi Thread, održavanje je dugotrajno. |
Sažetak – Runnable vs Thread
Proces je podijeljen u više podprocesa za obavljanje više zadataka u isto vrijeme. Ovi potprocesi poznati su kao niti. Instanciranje niti može se izvršiti implementacijom Runnable sučelja ili proširenjem Thread Class. Lako je proširiti klasu Thread, ali to nije bolja praksa objektno orijentiranog programiranja. Prilikom implementacije Runnable-a, mnoge niti mogu dijeliti isti objekt niti dok u klasi Thread za proširenje svaka nit ima jedinstveni objekt povezan s njom. To je razlika između Runnable i Thread. U klasi Thread stvaranje više objekata može potrošiti više memorije.
Preuzmite PDF Runnable vs Thread
Možete preuzeti PDF verziju ovog članka i koristiti ga za izvanmrežne svrhe prema napomeni o citatu. Ovdje preuzmite PDF verziju. Razlika između Runnable i Thread