Latest web development tutorials

Esempi Java - Get State filo

Esempi di Java Esempi di Java

thread Java del ciclo di vita possono essere suddivisi in cinque stati.

  • 1. Creare un nuovo stato (Nuovo): crea un nuovo oggetto thread.
  • 2. stato di pronto (Runnable): Dopo aver creato l'oggetto thread, l'altro thread chiama il metodo start () dell'oggetto. Lo stato del filo thread eseguibili in piscina si trova, è diventato eseguibile, in attesa di acquisire il diritto di utilizzare la CPU.
  • 3. Eseguire Stato (Running): filo stato di pronto ottiene una CPU, l'esecuzione del codice di programma.
  • 4. bloccati (bloccato): il thread è bloccato per qualche motivo a rinunciare al diritto di utilizzare CPU interrompe temporaneamente l'esecuzione. Fino a quando il filo nello stato pronto, la possibilità di andare a correre. Caso bloccato tre categorie:
    • metodo di esecuzione run attesa filo (), JVM sarà il filo nella piscina di attesa: (A), in attesa di blocco.
    • (B), il blocco sincrono: thread in esecuzione per ottenere l'oggetto del blocco di sincronizzazione, se il blocco di sincronizzazione è occupato da un altro thread, la JVM si blocca nel pool di thread.
    • Metodo filo conduttore esecuzione sleep () o partecipare (), o emettere la richiesta di I / O, JVM imposterà il thread è bloccato: (C) Altro bloccato. Quando il sonno () timeout, join () attende per un thread termina o scade, o I / O di elaborazione è completata, il filo nello stato di nuovo pronto.
  • 5. la morte dello stato (guasto): l'esecuzione del filo a causa di anomale sopra o fuori del metodo run (), l'estremità del filo del ciclo di vita.

006

L'esempio seguente mostra come ottenere lo stato del filo:

/*
 author by w3cschool.cc
 Main.java
 */

class MyThread extends Thread{
   boolean waiting= true;
   boolean ready= false;
   MyThread() {
   }
   public void run() {
      String thrdName = Thread.currentThread().getName();
      System.out.println(thrdName + " 启动");
      while(waiting)
      System.out.println("等待:"+waiting);
      System.out.println("等待...");
      startWait();
      try {
         Thread.sleep(1000);
      }
      catch(Exception exc) {
         System.out.println(thrdName + " 中断。");
      }
      System.out.println(thrdName + " 结束。");
   }
   synchronized void startWait() {
      try {
         while(!ready) wait();
      }
      catch(InterruptedException exc) {
         System.out.println("wait() 中断。");
      }
   }
   synchronized void notice() {
      ready = true;
      notify();
   }
}
public class Main {
   public static void main(String args[]) 
   throws Exception{
      MyThread thrd = new MyThread();
      thrd.setName("MyThread #1");
      showThreadStatus(thrd);
      thrd.start();
      Thread.sleep(50);
      showThreadStatus(thrd);
      thrd.waiting = false;
      Thread.sleep(50);
      showThreadStatus(thrd);
      thrd.notice();
      Thread.sleep(50);
      showThreadStatus(thrd);
      while(thrd.isAlive())
      System.out.println("alive");
      showThreadStatus(thrd);
   }
   static void showThreadStatus(Thread thrd) {
      System.out.println(thrd.getName()+" 存活:" +thrd.isAlive()+" 状态:" + thrd.getState() );
   }
}

Il codice di cui sopra viene eseguito in uscita è:

……
alive
alive
alive
MyThread #1 结束。
alive
alive
alive
alive
alive
alive
alive
MyThread #1 存活:false 状态:TERMINATED

Esempi di Java Esempi di Java