Istnieją dwa sposoby utworzenia wątku:
- Rozszerzając klasę Thread
- 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:
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
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 ...