Przed wprowadzeniem koncepcja wątku , nie mogliśmy uruchomić więcej niż jednego zadania równolegle. Była to wada i aby tę wadę usunąć, Koncepcja wątku został wprowadzony.
A Nitka jest procesem bardzo lekkim, lub możemy powiedzieć, najmniejsza część procesu, która pozwala programowi działać wydajniej poprzez jednoczesne wykonywanie wielu zadań.
jak wygenerować liczbę losową w Javie
Aby wykonywać skomplikowane zadania w tle, wykorzystaliśmy funkcję Koncepcja wątku w Javie . Wszystkie zadania są wykonywane bez wpływu na program główny. W programie lub procesie wszystkie wątki mają własną, oddzielną ścieżkę wykonania, więc każdy wątek procesu jest niezależny.
Kolejna zaleta stosowania nitka polega na tym, że jeśli wątek otrzyma wyjątek lub błąd w momencie jego wykonania, nie ma to wpływu na wykonanie innych wątków. Wszystkie wątki mają wspólną pamięć i własny stos, zmienne lokalne i licznik programu. Kiedy wiele wątków jest wykonywanych równolegle w tym samym czasie, proces ten nazywa się Wielowątkowość .
W prosty sposób wątek to:
- Funkcja dzięki której możemy wykonać wiele czynności w ramach jednego procesu.
- Lekki proces.
- Seria wykonanych instrukcji.
- Zagnieżdżona sekwencja wywołań metod.
Model wątku
Podobnie jak proces, wątek istnieje w kilku stanach. Stany te są następujące:
1) Nowy (gotowy do uruchomienia)
Jest wątek Nowy kiedy otrzyma czas procesora.
2) Bieganie
Jest wątek Bieganie określić, kiedy jest on wykonywany.
3) Zawieszony
Wątek jest w Zawieszony stan, gdy jest chwilowo nieaktywny lub w trakcie wykonywania.
4) Zablokowano
Wątek jest w Zablokowany stan, kiedy oczekuje na zasoby.
5) Zakończony
Wątek znajduje się w tym stanie, gdy w dowolnym momencie natychmiast zatrzymuje swoje działanie.
Tworzenie wątku
Wątek jest tworzony poprzez „tworzenie lub wdrażanie” pliku Uruchomialny interfejs lub poprzez przedłużenie Klasa wątku . To jedyne dwa sposoby, dzięki którym możemy utworzyć wątek.
Przyjrzyjmy się szczegółom obu sposobów tworzenia wątku:
potrójna zima
Klasa wątku
A Klasa wątku ma kilka metod i konstruktorów, które pozwalają nam wykonywać różne operacje na wątku. Klasa Thread rozszerza klasę Obiekt klasa. The Obiekt klasa implementuje Możliwość uruchomienia interfejs. Klasa wątku ma następujące konstruktory, które służą do wykonywania różnych operacji.
Uruchomialny interfejs (metoda run())
Interfejs Runnable musi być zaimplementowany przez tę klasę, której instancje mają być wykonywane przez wątek. Uruchamialny interfejs zapewnia nam uruchomić() metoda wykonania akcji dla wątku.
metoda start().
Metoda służy do rozpoczęcia nowo utworzonego przez nas wątku. Rozpoczyna nowy wątek z nowym stosem wywołań. Po wykonaniu początek() metoda wątek zmienia stan z New na Runnable. Wykonuje metoda run(). kiedy wątek otrzyma właściwy czas na jego wykonanie.
Weźmy przykład, aby zrozumieć, jak możemy utworzyć plik Jawa thread poprzez rozszerzenie klasy Thread:
Przykład wątku1.java
// Implementing runnable interface by extending Thread class public class ThreadExample1 extends Thread { // run() method to perform action for thread. public void run() { int a= 10; int b=12; int result = a+b; System.out.println('Thread started running..'); System.out.println('Sum of two numbers is: '+ result); } public static void main( String args[] ) { // Creating instance of the class extend Thread class ThreadExample1 t1 = new ThreadExample1(); //calling start method to execute the run() method of the Thread class t1.start(); } }
Wyjście:
Tworzenie wątku poprzez implementację uruchamialnego interfejsu
W Javie możemy również utworzyć wątek, implementując uruchamialny interfejs. Uruchamialny interfejs udostępnia nam zarówno metodę run(), jak i metodę start().
Weźmy przykład, aby zrozumieć, jak możemy utworzyć, uruchomić i uruchomić wątek za pomocą uruchamialnego interfejsu.
znaczenie xdxd
Przykład wątku2.java
class NewThread implements Runnable { String name; Thread thread; NewThread (String name){ this.name = name; thread = new Thread(this, name); System.out.println( 'A New thread: ' + thread+ 'is created ' ); thread.start(); } public void run() { try { for(int j = 5; j > 0; j--) { System.out.println(name + ': ' + j); Thread.sleep(1000); } }catch (InterruptedException e) { System.out.println(name + ' thread Interrupted'); } System.out.println(name + ' thread exiting.'); } } class ThreadExample2 { public static void main(String args[]) { new NewThread('1st'); new NewThread('2nd'); new NewThread('3rd'); try { Thread.sleep(8000); } catch (InterruptedException excetion) { System.out.println('Inturruption occurs in Main Thread'); } System.out.println('We are exiting from Main Thread'); } }
Wyjście:
W powyższym przykładzie wykonujemy wielowątkowość poprzez implementację uruchamialnego interfejsu. Aby dowiedzieć się więcej o wielowątkowości, Kliknij tutaj .