Kluczowa różnica – możliwość uruchomienia a wątek
Wykonywany program jest nazywany procesem. Proces można podzielić na wiele podprocesów. Na przykład Microsoft Word to proces. Jednocześnie sprawdza błędy ortograficzne i gramatyczne. To jest podproces. Te podprocesy są znane jako wątki. Wielowątkowość to proces jednoczesnego wykonywania wielu wątków. 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 implementacji Runnable, wiele wątków może współdzielić ten sam obiekt wątku, podczas gdy w klasie Extending Thread każdy wątek ma skojarzony z nim unikalny obiekt. To jest kluczowa różnica między Runnable a Thread.
Co to jest Runnable?
Wątek przechodzi przez kilka stanów. „Nowe” to początek cyklu życia wątku. Po wywołaniu metody start() nowego wątku staje się on możliwy do uruchomienia. Jeśli harmonogram wątków wybierze wątek, przechodzi do stanu uruchomionego. Wątek czeka na stan, jeśli ten wątek czeka na wykonanie zadania przez inny wątek. Po zakończeniu pracy wątek przechodzi w stan zakończenia.
Wątek można zaimplementować za pomocą interfejsu Runnable. Zapoznaj się z poniższym programem.
Rysunek 01: Program Java do tworzenia wątku przy użyciu interfejsu Runnable
Zgodnie z powyższym programem klasa Runnable Demo implementuje interfejs Runnable. Metoda run() znajduje się wewnątrz klasy, która implementuje interfejs Runnable. Jest to punkt wejścia dla wątku. Logika znajduje się w metodzie run(). W głównym programie wątek jest tworzony poprzez zdefiniowanie obiektu, który został utworzony z klasy Runnable Demo. To jest t1. Metoda start() jest wywoływana za pomocą t1.
Odnieś się do poniższego programu.
Rysunek 02: Program Java do tworzenia wątku w celu wykonania pętli poprzez implementację interfejsu Runnable
Według powyższego przykładu, klasa Runnable Demo implementuje interfejs Runnable. Logika do wykonania za pomocą wątku jest napisana w metodzie run(). W głównym programie wątek jest tworzony poprzez zdefiniowanie obiektu, który został utworzony z klasy Runnable Demo. To jest t1. Następnie wywoływana jest metoda start() za pomocą t1.
Co to jest wątek?
Inną metodą tworzenia wątku jest rozszerzenie klasy Thread. Składa się z trzech kroków. Pierwszym z nich jest zadeklarowanie klasy jako rozszerzenia klasy Thread. Następnie należy napisać metodę run(). Zawiera sekwencję kroków, które wątek powinien wykonać. Na koniec tworzony jest obiekt wątku i wywoływana jest metoda start() w celu zainicjowania wykonania wątku. Zapoznaj się z poniższym programem.
Rysunek 03: Program Java rozszerzający klasę Thread
Zgodnie z powyższym programem, klasa MyThread rozszerza klasę Thread. Zastępuje metodę run. 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 thread1. Wątek jest uruchamiany przy użyciu 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, które rozszerzają klasę Thread
Zgodnie z powyższym programem, zarówno klasa A, jak i B rozszerzają klasę Thread. Obie klasy mają swoją implementację metody run(). Głównym wątkiem jest wykonanie metody main(). Zanim główny wątek umrze, tworzy i uruchamia thread1 i thread2. Zanim wątek główny osiągnie koniec metody głównej, trzy wątki działają równolegle. Nie ma określonej kolejności, w jakiej wątki dają wyjście. Po uruchomieniu wątku trudno jest zdecydować, w jakiej kolejności będą wykonywać. Działają niezależnie.
Jakie są podobieństwa między Runnable a Thread?
Oboje używają do tworzenia wątków w Javie
Jaka jest różnica między Runnable a Thread?
Możliwość uruchomienia a wątek |
|
Runnable to interfejs w Javie do tworzenia wątku, który pozwala wielu wątkom współużytkować ten sam obiekt wątku. | Wątek to klasa w Javie do tworzenia wątku, w którym każdy wątek ma przypisany unikalny obiekt. |
Pamięć | |
W Runnable wiele wątków współdzieli ten sam obiekt, więc wymaga mniej pamięci. | W klasie Thread każdy wątek tworzy unikalny obiekt, dlatego wymaga więcej pamięci. |
Rozszerzanie możliwości | |
Po zaimplementowaniu interfejsu Runnable można rozszerzyć klasę. | Dziedziczenie wielokrotne nie jest obsługiwane w Javie. Po rozszerzeniu klasy Thread nie można rozszerzyć żadnej innej klasy. |
Utrzymanie kodu | |
Runnable interface sprawia, że kod jest łatwiejszy w utrzymaniu. | W klasie Thread utrzymanie jest czasochłonne. |
Podsumowanie - możliwość uruchomienia a wątek
Proces jest podzielony na wiele podprocesów, które umożliwiają wykonywanie wielu zadań jednocześnie. Te podprocesy są znane jako wątki. Tworzenie wystąpienia wątku można wykonać, implementując interfejs Runnable lub rozszerzając klasę Thread. Łatwo jest rozszerzyć klasę Thread, ale nie jest to lepsza praktyka programowania obiektowego. Podczas implementacji Runnable, wiele wątków może współdzielić ten sam obiekt wątku, podczas gdy w rozszerzeniu klasy Thread każdy wątek ma skojarzony z nim unikalny obiekt. To jest różnica między Runnable a Thread. W klasie Thread tworzenie wielu obiektów może zużywać więcej pamięci.
Pobierz plik PDF Runnable vs Thread
Możesz pobrać wersję PDF tego artykułu i używać jej do celów offline zgodnie z notatką cytowania. Proszę pobrać wersję PDF tutaj Różnica między Runnable a Thread