Java >> Java Program >  >> Java

Livscykel för en tråd (trådtillstånd) i Java

För att förstå Java flertrådad programmering bättre bör du ha en god uppfattning om Trådens livscykel i Java och olika trådtillstånd i Java .

När du väl har skapat en tråd i Java kan en tråd vara i ett av följande tillstånd-

  • NYTT
  • KÖRBAR
  • BLOCKERAD
  • VÄNTAR
  • TIMED_WAITING
  • AVSLUTAD

Trådtillstånd i Java förklaras

Olika trådtillstånd i Java multi-threading är som följer.

  1. 1- Ny delstat – En tråd i Java är i nytt tillstånd när den skapas men ännu inte startat, dvs. start() metod anropas inte på trådobjektet.
  2. Körbart tillstånd - En tråd övergår till ett körbart tillstånd när start() metod anropas på trådobjektet. En tråd i körbart tillstånd är planerad att köras av JVM men den kanske inte börjar köras förrän den får CPU-cykel.

    En Java-tråd efter start kan ändras till ett av dessa tillstånd - väntar, blockerad, återupptas och avslutas.

  3. Blockerat tillstånd - En löpande tråd kan ändra tillstånd till blockerat tillstånd och bli tillfälligt inaktiv när den väntar på ett monitorlås. Till exempel om en tråd har gått in i ett synkroniserat block kommer andra trådar som försöker skaffa ett lås för att komma in i samma synkroniserade block att blockeras.
    synchronized (object reference) {   
      //critical section
    }

    När tråden som har låset släpper det, kommer schemaläggaren att slumpmässigt välja en av trådblockeringarna på det synkroniserade blocket och ändra dess tillstånd så att det kan fortsätta att köras. En tråd i blockerat tillstånd får ingen CPU-tid.

  4. Vänteläge - En pågående tråd kan flyttas till obestämt vänteläge genom att anropa antingen Object.wait() eller Thread.join() metod utan någon time-out-parameter.

    En tråd i vänteläge väntar på att en annan tråd ska utföra en viss åtgärd. Till exempel, en tråd som har anropat Object.wait() på ett objekt väntar på att en annan tråd ska anropa Object.notify() eller Object.notifyAll() på det objektet. En tråd som har kallat Thread.join() väntar på att en specificerad tråd ska avslutas.

  5. Timed_Waiting state - En tråd är i tidsbestämt vänteläge när den anropar en av följande metoder med en timeout-parameter.

    • Thread.sleep
    • Object.wait med timeout
    • Thread.join med timeout
    • LockSupport.parkNanos
    • LockSupport.parkUntil

    Till exempel-

    MyThread thread = new MyThread();
    thread.start();
    try {
      thread.sleep(500);
    } catch (InterruptedException e){
    
    }

    Den här koden kommer att få den körande tråden att vila (tillfälligt sluta köra) i 500 millisekunder.

  6. Avslutat tillstånd - En tråd som har slutfört körningen går till avslutat tillstånd.

Hämta trådstatus i Java-kod

Du kan få trådstatus i Java genom att ringa getState() metod på trådinstansen som returnerar en Thread.State uppräkning.

class AnotherThread implements Runnable{
  @Override
  public void run() {
    System.out.println("run method of Another thread --" 
      + Thread.currentThread().getName());	
  }	
}

public class ThreadDemo {
  public static void main(String[] args) {
    Thread thread = new Thread(new AnotherThread(), "AnotherThread");
    Thread.State ts = thread.getState();
    System.out.println("Thread state-- " + ts.name());
    thread.start();
    System.out.println("Thread state after start-- " + thread.getState().name());
  }
}
Utdata
Thread state-- NEW
Thread state after start-- RUNNABLE
run method of Another thread --AnotherThread
Relaterade inlägg
  • Hur man skapar och startar tråd i Java
  • Huvudtråd i Java
  • Daemon-tråd i Java
  • Trådprioritet i Java med exempel
  • Trådgrupp i Java
  • isAlive() Och join()-metoder i Java
  • Hur man skapar tråd i Python
  • Skriv ut nummer sekventiellt med tre trådar i Java

Det var allt för ämnet en tråds livscykel (trådtillstånd) i Java . Om något saknas eller om du har något att dela om ämnet, skriv en kommentar.


Java-tagg