logo

Metoda Java Thread start().

The początek() Metoda klasy wątku służy do rozpoczęcia wykonywania wątku. Wynikiem tej metody są dwa wątki, które działają jednocześnie: bieżący wątek (który powraca z wywołania metody start) i drugi wątek (który wykonuje swoją metodę uruchamiania).

Metoda start() wewnętrznie wywołuje metodę run() interfejsu Runnable w celu wykonania kodu określonego w metodzie run() w oddzielnym wątku.

Wątek początkowy wykonuje następujące zadania:

  • Statystyki zakładają nowy wątek
  • Wątek przechodzi z nowego stanu do stanu uruchomionego.
  • Kiedy wątek otrzyma szansę na wykonanie, zostanie uruchomiona jego docelowa metoda run().

Składnia

 public void start() 

Wartość zwracana

 It does not return any value. 

Wyjątek

Wyjątek IllegalThreadStateException — Ten wyjątek jest zgłaszany, jeśli metoda start() jest wywoływana więcej niż jeden raz.

Przykład 1: Rozszerzając klasę wątku

 public class StartExp1 extends Thread { public void run() { System.out.println('Thread is running...'); } public static void main(String args[]) { StartExp1 t1=new StartExp1(); // this will call run() method t1.start(); } } 
Przetestuj teraz

Wyjście:

 Thread is running... 

Przykład 2: poprzez wdrożenie działającego interfejsu

 public class StartExp2 implements Runnable { public void run() { System.out.println('Thread is running...'); } public static void main(String args[]) { StartExp2 m1=new StartExp2 (); Thread t1 =new Thread(m1); // this will call run() method t1.start(); } } 
Przetestuj teraz

Wyjście:

 Thread is running... 

Przykład 3: Gdy wywołasz metodę start() więcej niż raz

 public class StartExp3 extends Thread { public void run() { System.out.println('First thread running...'); } public static void main(String args[]) { StartExp3 t1=new StartExp3(); t1.start(); // It will through an exception because you are calling start() method more than one time t1.start(); } } 
Przetestuj teraz

Wyjście:

 First thread running... Exception in thread 'main' java.lang.IllegalThreadStateException at java.lang.Thread.start(Thread.java:708) at StartExp3.main(StartExp3.java:12)