Jak utworzyć wątek w Javie? | Wielowątkowość w Javie
Opublikowany: 2020-12-29W tym artykule przyjrzymy się wątkom w Javie i zbadamy mechanizmy, które umożliwiają tworzenie wątków.
Spis treści
Wątek w Javie
Funkcja wątkowości w Javie jest lekkim podprocesem. Uważa się, że jest to najmniejsza jednostka przetwarzania. Jest środkiem do osiągnięcia wielozadaniowości w programie. Jest to przydatna funkcja, jeśli chodzi o gry, animacje itp.
Java ma wbudowaną obsługę tworzenia wątków i wielowątkowości. Jest to sprytne podejście do minimalizowania nieefektywności i ciągnięcia poprzez optymalne wykorzystanie miejsca na procesorze. W Javie można to zrobić na dwa sposoby:
- Rozszerz klasę wątku lub
- Implementuj uruchamialny interfejs
Gdy więcej niż jeden wątki są wykonywane jednocześnie, nazywa się to wielowątkowością. Zasadniczo pozwala to na jednoczesne działanie wielu części programu, każda część wątku i każdy wątek podąża odrębną ścieżką do wykonania.
Wątki wykorzystują współdzieloną przestrzeń pamięci; pamięć nie jest przydzielana do każdej części, co skutkuje maksymalnym wykorzystaniem procesora. Co więcej, zmiana kontekstów nie zajmuje dużo czasu. Jednak zbyt wiele wątków może zaangażować procesor w przełączanie kontekstu, a wykonanie może zostać opóźnione.
Wątek może istnieć w jednym z następujących sześciu stanów
- NOWY – jak tylko wątek zostanie utworzony, istnieje w nowym stanie. Zasadniczo oznacza to, że wątek jeszcze się nie rozpoczął.
- URUCHOM – gdy wątek jest wykonywany lub jest w kolejce do wykonania, jest w stanie uruchomionym.
- OCZEKUJĄCY – działający wątek jest czasami wstrzymywany lub zawieszany w celu umożliwienia innej aktywności. Wersja wait() lub join() bez limitu czasu może zawiesić wykonywanie wątku. Gdy akcja zostanie wykonana, zawieszony wątek jest wznawiany.
- TIMED-WAITING – działający wątek jest czasami tymczasowo zatrzymany lub zawieszony na określony czas. Na przykład, gdy wywoływana jest funkcja sleep().
- ZABLOKOWANY – gdy zawieszony wątek Javy nie może pozyskać określonego zasobu, zostaje zablokowany i istnieje w stanie zablokowanym.
- ZAKOŃCZONY – gdy wątek zakończył swoje wykonanie, istnieje w stanie zakończonym. Możesz jednak zakończyć wątek w dowolnym momencie.
Dowiedz się więcej o architekturze i komponentach Java.

Korzyści z tworzenia wątku w Javie
Tworzenie wątków ma kilka zalet. Niektóre z nich to
- Ponieważ wątki są niezależne, jedno wykonanie nie wpływa na inne, nawet jeśli działają na współdzielonej przestrzeni pamięci. Oznacza to również, że możesz wykonywać więcej niż jedną operację jednocześnie.
- Threading jest formą wielozadaniowości i oszczędza czas.
- Błąd w jednym wątku nie wpływa na inny.
Jak stworzyć wątek w Javie?
Jak omówiono powyżej, można to zrobić na dwa sposoby: Extend Thread Class lub Implement Runnable Interface
Klasa wątku
W klasie Thread znajdują się konstruktory i metody, które umożliwiają wykonywanie operacji, zarządzanie i śledzenie wątków. Rozszerza klasę Object, która następnie implementuje towarzyszący interfejs Runnable. Konstruktory obecne w klasie wątków to :Thread(), Thread(String name), Thread(Runnable r) i Thread(Runnable r, String name).
Poniżej znajdują się metody i ich opisy
| metoda | Do czego służy? |
| początek() | Rozpoczyna wykonanie |
| biegać() | Aby uruchomić akcję dla wątku |
| spać() | Usypia wątek na określony czas |
| Przystąp() | Poczekaj, aż kolejny wątek zostanie zakończony |
| pobierzPriorytet() | Aby oznaczyć priorytet danego wątku |
| Ustaw priorytet() | Aby zmienić priorytet danego wątku |
| pobierzNazwę() | Aby zwrócić nazwę wskazanego wątku |
| zestawNazwa() | Aby zmienić nazwę określonego wątku |
| pobierzId() | Aby zwrócić identyfikator danego wątku |
| żyje() | Aby sprawdzić, czy wątek nadal istnieje w każdym ze stanów |
| dawać() | Wstrzymuje wykonywanie obiektu wątku, aby umożliwić działanie innym wątkom |
| zawieszać() | Aby zawiesić dany wątek |
| wznawianie() | Aby wznowić wątek ze stanu zawieszenia |
| zatrzymać() | Aby zatrzymać dany wątek |
| zniszczyć() | Aby zniszczyć grupę wątków i podgrupy |
| przerwać() | Aby spowodować przerwanie wykonywania wątku |
| jest przerwana () | Aby sprawdzić, czy wykonanie danego wątku jest przerwane |
| przerwany () | Aby sprawdzić, czy bieżące wykonywanie wątku jest przerwane |
| activeCount() | Aby zwrócić liczbę aktywnych wątków w grupie wątków |
| holdLock() | Zwraca true wtedy i tylko wtedy, gdy bieżący wątek utrzymuje blokadę monitora na określonym obiekcie. |
| pobierz stan() | Aby określić stan danego wątku |
| setContextClass Loader() | Aby ustawić kontekst ClassLoader |
| getContextClass Loader() | Aby zwrócić kontekst ClassLoader |
Aby utworzyć wątek poprzez rozszerzenie klasy Thread, należy najpierw stworzyć klasę rozszerzającą klasę java.lang.Thread. Ta klasa jest zdefiniowana w celu przesłonięcia metody run(). Następnie w nowej klasie tworzony jest obiekt, który następuje poprzez wywołanie metody start() w celu rozpoczęcia wykonywania wątku.

Musisz przeczytać: Programy wzorców w Javie, które powinieneś sprawdzić
Uruchomiony interfejs
To najłatwiejszy sposób na stworzenie wątku. Do zaimplementowania Runnable Interface wymagana jest tylko jedna metoda: run()
Aby to zadeklarować, piszemy
publiczne void run()

Wewnątrz run() przystępujemy do pisania kodu tworzącego nowy wątek.
Zapisz się na kursy inżynierii oprogramowania z najlepszych światowych uniwersytetów. Zdobywaj programy Executive PG, Advanced Certificate Programs lub Masters Programs, aby przyspieszyć swoją karierę.
Klasa wątku a uruchamialny interfejs
Klasa wątku uniemożliwia rozszerzenie jakiejkolwiek innej klasy. Dzieje się tak, ponieważ w Javie nie jest możliwe wielokrotne dziedziczenie. Nie dzieje się tak jednak w przypadku implementacji interfejsu Runnable, w którym kontynuujemy rozszerzanie innych klas.
Klasa Extending Thread udostępnia kilka ważnych metod, które zwiększają funkcjonalność wątku. Na przykład yield(), stop(), isalive(), przerwanie(). Interfejs Runnable ma tylko metodę, która jest raczej ograniczająca.
Zawijanie
Jeśli chcesz dowiedzieć się więcej na temat Java, pełnego stosu oprogramowania, sprawdź program Executive PG UpGrad i IIIT-B w zakresie pełnego stosu oprogramowania, który jest przeznaczony dla pracujących profesjonalistów i oferuje ponad 500 godzin rygorystycznego szkolenia, 9+ projekty i zadania, status absolwentów IIIT-B, praktyczne praktyczne projekty zwieńczenia i pomoc w pracy z najlepszymi firmami.

