Różnica między Runnable a Thread

Kluczowa różnica - Runnable vs Wątek
 

Program w trakcie wykonywania jest znany jako proces. Proces można podzielić na wiele podprocesów. Na przykład Microsoft Word to proces. Jednocześnie sprawdza błąd ortograficzny i gramatykę. To jest podproces. Te podprocesy są znane jako wątki. Wielowątkowość to proces wykonywania wielu wątków jednocześnie. Aplikacje wątkowe można budować przy użyciu różnych języków programowania. Runnable i Thread są powiązane z programowaniem Java. W Javie istnieją dwie metody tworzenia wątków poprzez implementację interfejsu Runnable lub rozszerzenie klasy Thread. Podczas implementowania Runnable wiele wątków może współużytkować ten sam obiekt wątku, podczas gdy w rozszerzonej klasie wątku, z każdym wątkiem jest powiązany unikalny obiekt. To jest kluczowa różnica między Runnable a Thread.

ZAWARTOŚĆ

1. Przegląd i kluczowa różnica
2. Co to jest Runnable
3. Co to jest wątek
4. Podobieństwa między Runnable a Thread
5. Porównanie obok siebie - Runnable vs Thread w formie tabelarycznej
6. Podsumowanie

Co to jest Runnable?

Wątek przechodzi przez niektóre stany. „Nowy” jest początkiem cyklu życia nici. Po wywołaniu przez metodę start () nowego wątku, można go uruchomić. Jeśli planista wątków wybierze wątek, przechodzi on do stanu roboczego. Wątek czeka na stan, jeśli ten wątek czeka na wykonanie innego wątku. Po zakończeniu pracy wątek przechodzi do stanu zakończenia.

Wątek można zaimplementować za pomocą interfejsu Runnable. Zobacz poniższy program.

Rysunek 01: Program Java do tworzenia wątków za pomocą interfejsu Runnable

Zgodnie z powyższym programem klasa Runnable Demo implementuje interfejs Runnable. Metoda run () znajduje się w klasie, która implementuje interfejs Runnable. Jest to punkt wejścia do wątku. Logika jest w metodzie run (). W programie głównym wątek jest tworzony przez zdefiniowanie obiektu, który utworzył instancję z klasy Runnable Demo. To jest t1. Metoda start () jest wywoływana przy użyciu t1.

Zobacz poniższy program.

Rysunek 02: Program Java do tworzenia wątków w celu wykonania pętli poprzez implementację interfejsu Runnable

Zgodnie z powyższym przykładem klasa Runnable Demo implementuje interfejs Runnable. Logika wykonywana przy użyciu wątku jest zapisywana w metodzie run (). W programie głównym wątek jest tworzony przez zdefiniowanie obiektu, który utworzył instancję z klasy Runnable Demo. To jest t1. Następnie metoda start () jest wywoływana za pomocą t1.

Co to jest wątek?

Inną metodą tworzenia wątku jest rozszerzenie klasy Thread. Składa się z trzech kroków. Najpierw należy zadeklarować klasę jako rozszerzającą klasę Thread. Następnie należy napisać metodę run (). Ma sekwencję kroków, które powinien wykonać wątek. Na koniec tworzony jest obiekt wątku i wywoływana jest metoda start () w celu zainicjowania wykonania wątku. Zobacz poniższy program.

Rysunek 03: Program Java, który rozszerza klasę Thread

Zgodnie z powyższym programem klasa MyThread rozszerza klasę Thread. Zastępuje metodę uruchamiania. Metoda run () zawiera logikę do wykonania przez wątek. Jest to punkt wejścia do wątku. Następnie tworzony jest obiekt wątku. To jest wątek 1. Wątek jest uruchamiany za pomocą metody start (). Wykona wywołanie metody run ().

Przykładowy program dwóch klas rozszerzających klasę Thread jest następujący.

Rysunek 04: Program Java z dwiema klasami rozszerzającymi klasę Thread

Zgodnie z powyższym programem zarówno klasa A, jak i B rozszerzają klasę gwintu. Obie klasy mają implementację metody run (). Główny wątek wykonuje metodę main (). Zanim główny wątek umrze, tworzy i uruchamia wątek 1 i wątek 2. Zanim główny wątek osiągnie koniec głównej metody, trzy wątki działają równolegle. Nie ma określonej kolejności, w której wątki dają dane wyjściowe. Po uruchomieniu wątku trudno jest zdecydować o kolejności ich wykonania. Działają niezależnie.

Jakie są podobieństwa między Runnable a Thread?

  • Oba używają do tworzenia wątku w Javie.

Jaka jest różnica między Runnable a Thread?

Runnable vs Thread

Runnable to interfejs w Javie do tworzenia wątku, który umożliwia wielu wątkom współużytkowanie tego samego obiektu wątku. Wątek jest klasą w Javie do tworzenia wątku, z którym każdy wątek ma przypisany unikalny obiekt.
 Pamięć
W Runnable wiele wątków współdzieli ten sam obiekt, więc wymagają mniej pamięci. W klasie Thread każdy wątek tworzy unikalny obiekt, dlatego wymaga więcej pamięci.
Rozszerzanie zdolności
Po zaimplementowaniu interfejsu Runnable może rozszerzyć klasę. Wiele dziedziczeń nie jest obsługiwanych w Javie. Po rozszerzeniu klasy Thread nie może ona rozszerzyć żadnej innej klasy.
 Utrzymywalność kodu
Interfejs, który można uruchomić, ułatwia utrzymanie kodu. W klasie wątków utrzymanie jest czasochłonne.

Podsumowanie - Runnable vs Wątek 

Proces jest podzielony na wiele podprocesów w celu wykonania wielu zadań jednocześnie. Te podprocesy są znane jako wątki. Tworzenie instancji wątku można wykonać, implementując interfejs Runnable lub rozszerzając klasę wątku. Łatwo jest rozszerzyć klasę Thread, ale nie jest to lepsza praktyka programowania obiektowego. Podczas implementowania Runnable wiele wątków może współużytkować ten sam obiekt wątku, podczas gdy przy rozszerzaniu klasy Thread każdy wątek jest powiązany z unikalnym obiektem. To jest różnica między Runnable a Thread. W klasie wątków tworzenie wielu obiektów może zajmować więcej pamięci.

Pobierz plik PDF Runnable vs Thread

Możesz pobrać wersję PDF tego artykułu i używać go do celów offline zgodnie z cytatem. Pobierz wersję PDF tutaj Różnica między Runnable a Thread

Odniesienie:

1.tutorialspoint.com. „Wielowątkowość Java”. The Point, dostępny tutaj 
2.Pramodbablad. „Rozszerza wątek Vs implementuje Runnable w Javie.” Koncepcja dnia Java, 11 listopada 2016 r. Dostępne tutaj
3. Sposoby tworzenia wątku w wielowątkowości Java | Podstawowy samouczek Java | Studytonight. Dostępny tutaj