Latest web development tutorials

Ejemplos Java - Obtener estado de la hebra

Ejemplos de Java Ejemplos de Java

hilos de Java en el ciclo de vida se pueden dividir en cinco estados.

  • 1. Crear un nuevo estado (Nuevo): crea un nuevo objeto hilo.
  • 2. estado preparado (Ejecutable): Una vez creado el objeto hilo, el otro hilo llama al método start () del objeto. El estado de la rosca threads ejecutables en la piscina se encuentra, se ha convertido en ejecutable, a la espera para adquirir el derecho de uso de la CPU.
  • 3. estado de ejecución (Running): Hilo de estado preparado para crear una CPU, ejecutando el código del programa.
  • 4. bloqueado (Bloqueado): el hilo se bloquea por alguna razón para renunciar el derecho de usar la CPU detiene temporalmente la ejecución. Hasta el hilo en el estado preparado, la oportunidad de salir a correr. Caso bloqueado tres categorías:
    • (A), a la espera de bloqueo: la ejecución de ejecución hilo método wait (), JVM, el hilo en la lista de espera.
    • (B), el bloqueo sincrónica: subprocesos que se ejecutan en la obtención del objeto de bloqueo de sincronización, si el bloqueo de sincronización está ocupado por otro hilo, la JVM se fijarán en el grupo de subprocesos.
    • método de hilo conductor a la ejecución de suspensión () o unirse a (), o emitir la solicitud de E / S, JVM fijará el hilo está bloqueado: (C) Otros bloqueado. Cuando el sueño () de tiempo de espera, join () espera a que un subproceso termina o el tiempo de espera, o I / O se ha completado el procesamiento, el hilo en el estado listo de nuevo.
  • 5. estado de muerte (Dead): la ejecución del hilo debido a la anormalidad durante o fuera del método run (), el extremo del hilo del ciclo de vida.

006

El siguiente ejemplo muestra cómo obtener el estado de la rosca:

/*
 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() );
   }
}

El código anterior se ejecuta salida es:

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

Ejemplos de Java Ejemplos de Java