logo

Wątki Java | Jak utworzyć wątek w Javie

Istnieją dwa sposoby utworzenia wątku:

  1. Rozszerzając klasę Thread
  2. Implementując interfejs Runnable.

Klasa wątku:

Klasa Thread udostępnia konstruktory i metody do tworzenia i wykonywania operacji na wątku. Klasa Thread rozszerza klasę Object i implementuje interfejs Runnable.

Powszechnie używane konstruktory klasy Thread:

  • Nitka()
  • Wątek (nazwa ciągu)
  • Wątek (wykonalny r)
  • Wątek (uruchamiany r, nazwa ciągu)

Powszechnie stosowane metody klasy Thread:

    publiczne puste uruchomienie():służy do wykonywania akcji dla wątku.publiczna pustka start():rozpoczyna wykonywanie wątku. JVM wywołuje metodę run() w wątku.publiczny pusty sen (długie milisekundy):Powoduje, że aktualnie wykonywany wątek przechodzi w stan uśpienia (tymczasowo wstrzymuje wykonywanie) na określoną liczbę milisekund.publiczne puste połączenie():czeka, aż wątek umrze.publiczne łączenie o pustkę (długie milisekundy):czeka na śmierć wątku przez określoną liczbę milisekund.publiczny int getPriority():zwraca priorytet wątku.public int setPriority(int priorytet):zmienia priorytet wątku.publiczny ciąg getName():zwraca nazwę wątku.public void setName (nazwa ciągu):zmienia nazwę wątku.wątek publiczny currentThread():zwraca odwołanie do aktualnie wykonywanego wątku.publiczny int getId():zwraca identyfikator wątku.publiczny wątek. Stan getState():zwraca stan wątku.publiczna wartość logiczna isAlive():sprawdza, czy wątek żyje.publiczna pusta wydajność():powoduje tymczasowe wstrzymanie aktualnie wykonywanego obiektu wątku i umożliwienie wykonania innym wątkom.publiczne unieważnienie zawieszenia():służy do zawieszenia wątku (przestarzały).publiczne puste CV():służy do wznowienia zawieszonego wątku (przestarzały).publiczny pusty przystanek():służy do zatrzymywania wątku (przestarzałe).publiczna wartość logiczna isDaemon():sprawdza, czy wątek jest wątkiem demona.public void setDaemon(boolean b):oznacza wątek jako demon lub wątek użytkownika.publiczne przerwanie o pustce ():przerywa wątek.publiczna wartość logiczna isInterrupted():sprawdza, czy wątek został przerwany.publiczna statyczna wartość logiczna przerwana ():sprawdza, czy bieżący wątek został przerwany.

Obsługiwany interfejs:

Interfejs Runnable powinien być zaimplementowany przez dowolną klasę, której instancje mają być wykonywane przez wątek. Uruchomialny interfejs ma tylko jedną metodę o nazwie run().

przykład lambdy w Javie
    publiczne puste uruchomienie():służy do wykonywania akcji dla wątku.

Rozpoczynanie wątku:

The metoda start(). klasy Thread służy do uruchomienia nowo utworzonego wątku. Wykonuje następujące zadania:

  • Rozpoczyna się nowy wątek (z nowym stosem wywołań).
  • Wątek przechodzi ze stanu Nowy do stanu Uruchomiony.
  • Kiedy wątek otrzyma szansę na wykonanie, zostanie uruchomiona jego docelowa metoda run().

1) Przykład wątku Java poprzez rozszerzenie klasy Thread

Nazwa pliku: Multi.java

 class Multi extends Thread{ public void run(){ System.out.println('thread is running...'); } public static void main(String args[]){ Multi t1=new Multi(); t1.start(); } } 

Wyjście:

 thread is running... 

2) Przykład wątku Java z implementacją interfejsu Runnable

Nazwa pliku: Multi3.java

 class Multi3 implements Runnable{ public void run(){ System.out.println('thread is running...'); } public static void main(String args[]){ Multi3 m1=new Multi3(); Thread t1 =new Thread(m1); // Using the constructor Thread(Runnable r) t1.start(); } } 

Wyjście:

 thread is running... 

Jeśli nie rozszerzasz klasy Thread, obiekt Twojej klasy nie będzie traktowany jako obiekt wątku. Musisz więc jawnie utworzyć obiekt klasy Thread. Przekazujemy obiekt Twojej klasy, który implementuje Runnable, aby Twoja metoda run() mogła zostać wykonana.

złamać Javę

3) Korzystanie z klasy Thread: Thread(Nazwa ciągu)

Możemy bezpośrednio użyć klasy Thread do tworzenia nowych wątków za pomocą konstruktorów zdefiniowanych powyżej.

Nazwa pliku: Mój wątek1.java

 public class MyThread1 { // Main method public static void main(String argvs[]) { // creating an object of the Thread class using the constructor Thread(String name) Thread t= new Thread('My first thread'); // the start() method moves the thread to the active state t.start(); // getting the thread name by invoking the getName() method String str = t.getName(); System.out.println(str); } } 

Wyjście:

hashmapa w Javie
 My first thread 

4) Korzystanie z klasy Thread: Thread(Runnable r, String name)

Przestrzegaj poniższego programu.

Nazwa pliku: Mój wątek2.java

 public class MyThread2 implements Runnable { public void run() { System.out.println('Now the thread is running ...'); } // main method public static void main(String argvs[]) { // creating an object of the class MyThread2 Runnable r1 = new MyThread2(); // creating an object of the class Thread using Thread(Runnable r, String name) Thread th1 = new Thread(r1, 'My new thread'); // the start() method moves the thread to the active state th1.start(); // getting the thread name by invoking the getName() method String str = th1.getName(); System.out.println(str); } } 

Wyjście:

 My new thread Now the thread is running ...