El hilo del ciclo de vida de Java conocimientos básicos y preguntas de la entrevista pertinentes

Un hilo del ciclo de vida:
(1) Ciclo de vida:
. Una cosa desde el momento del nacimiento hasta el final en el medio de todo el proceso de la muerte
En el largo ciclo de vida de las cosas, la experiencia es siempre diferente estado (gente infantiles estado / jóvenes estado / estado del estado de mediana edad / ancianos ...).
enhebrar también tiene un ciclo de vida, pero también hay diferentes estados, las transiciones entre cada estado.

(2) la definición de la API:
Aquí Insertar imagen Descripción
(3) una representación gráfica:
Aquí Insertar imagen Descripción

1: un nuevo estado (nuevo) Se utiliza para crear un nuevo objeto hilo, sólo se han de asignar espacio de memoria del montón, bajo el nuevo estado, el hilo que se inician antes de llamar al método de arranque, no es sólo un objeto único hilo t .Thread = new Thread () ;. // Este cuando t pertenece a un nuevo estado cuando el objeto hilo por debajo de un nuevo estado llamado el método de inicio, esta vez desde el estado ejecutable nuevo comienzo el método objeto hilo llamado una sola vez, de lo contrario un error :. IllegalThreadStateException.
2: estado de marcha (Ejecutable) Se divide en dos estados, listos y en funcionamiento. Representar un estado listo y estado de ejecutar. estado Ready: después de un método de inicio de llamada del objeto hilo, espera a que el planificador JVM (este hilo no se está ejecutando en este momento) el estado de funcionamiento: Objeto obtiene programación de subprocesos JVM, si hay una pluralidad de la CPU, que permite que varios hilos se ejecuten simultáneamente.
3: estado de bloqueo (bloqueado) subprocesos que se ejecutan renunciar a la CPU por alguna razón, de manera temporal de operación de parada, entrará en el estado de bloqueo. En este JVM no se le asignará a la rosca de la CPU, hasta que el hilo volver a entrar en el estado preparado, tiene la oportunidad de correr el estado. estado de bloqueo sólo puede primero entrar en el estado preparado, no está directamente en el estado de funcionamiento de los dos casos de bloqueo de estado: 1): cuando un subproceso se encuentra en el proceso de ejecución, tratando de conseguir genlock, B fue en este momento hilo JVM se guarda en el hilo actual. bloqueo del objeto en la piscina, un hilo en el estado bloqueado 2):. cuando un hilo está en el proceso de la operación, la solicitud IO se emite, esta vez en el estado bloqueado.
4. estado de espera (en espera) (Estado de espera sólo puede ser despertado por otros hilos): esperar ningún parámetro método utilizado en este caso, cuando el hilo está en el proceso de ejecución, llame al método wait (), la JVM en este momento no es un objeto de la piscina de espera subproceso actual.
Momento estado de espera (cronometrado de espera): 5 (Sleep o método de espera usando un método con parámetros) 1): Cuando un hilo es en el proceso de funcionamiento, llamado de espera (tiempo largo) método, la presencia de un objeto en este momento JVM hilo actual que esperar en la piscina 2): el hilo de ejecución actual sueño (mucho tiempo) método.
6: Estado final (terminado) comúnmente conocida como estado de muerte que la terminación de rosca 0.1): Largo Fin salidas método run (muerte injusta) .2): Después de la salida (excepción anormal se encuentran, el programa se interrumpe) (muerte accidental) .- hilo a su terminación, no puede reiniciar el inicio, de lo contrario un error (IllegalThreadStateException) obsoleta en método de la clase hilo (thread-safe porque hay un problema, por lo que no se use) :. vacío suspender (): detiene el flujo actual resume void (): la recuperación actual enhebrar void stop (): el extremo del hilo actual

preguntas de la entrevista: ¿Cuál es el estado de la rosca? estado de transferencia dependen de qué método?
R: Todo el estado y el estado de funcionamiento son (Ejecutable) transfirieron en
1: nuevo estado (nuevo nuevo) (inicio de llamada método ejecutable)
2: ejecutable (Ejecutable)
① parámetros utilizados en este caso no se método de espera entra en el estado de espera (en espera)
② (sueño o el método de espera usando un método con parámetros, un estado de espera en el temporizador
3: estado de bloqueo (bloqueado)
4. estado de espera (en espera) (método sólo puede ser utilizado por otros hilos o notificar el método notifyAll despertar runnable)
5: estado de temporizador de espera (espera temporizada) (un tiempo predeterminado para el parámetro de tiempo)
6: estado final (terminado)

Dos hilos de sueño:
sueño hilo: hilo de ejecución para hacer una pausa durante algún tiempo, el momento de entrar en el estado de espera.
Métodos: el sueño vacío (largos millis) estática
llamada del sueño, renuncian a la CPU hilo actual, dentro de un período específico de tiempo, el sueño en el que el hilo no tienen la oportunidad de ejecutar.
Hilo en este estado no liberará el bloqueo de sincronización / escucha de sincronización.
El método más utilizado para simular retraso de la red, de forma que varios subprocesos tienen acceso simultáneamente el mismo error efectos más evidentes de un recurso.
Deliberará uso de este método en el desarrollo

III. De hilo común (la unión)
el método de incorporación representa un hilo después de esperar hilo para otro hilo a la ejecución completa. Después se llama al método unirse a, el objeto hilo se bloquea.
Esto se llama también el hilo de las articulaciones, que el hilo es el hilo de corriente y el hilo donde la corriente combinan en un solo hilo.

class join extends Thread{
    @Override
    public void run() {
        for(int i =0;i<50;i++){
            System.out.println("join"+i);
        }
    }
}
public class JoinDemo {
    public static void main(String[] args) throws InterruptedException {
        join join = new join();
        for(int i =0;i<50;i++){
            if(i==10){
                join.start();
            }
            if(i==20){
                join.join();
            }
            System.out.println("main"+i);
        }
    }
}

Cuatro fondo hilo:
el hilo se ejecuta en segundo plano, su propósito es proporcionar servicios a otros temas, también conocido como el "guardián de la rosca." hebra de recogida de basura de la JVM es un subproceso de fondo típico.
Características: Si todas las discusiones primer plano han muerto, la muerte subproceso de fondo automático, hilo plano no ha terminado, un subproceso de fondo no es el final.
Si el objeto de prueba es un hilo de rosca de fondo: Uso thread.isDaemon ().
Cuando se crea el hilo de rosca de primer plano en el hilo plano por defecto, se puede establecer en un subproceso en segundo plano por setDaenon (verdadero) método, y si y sólo si el nuevo hilo se crea un subproceso de fondo, un nuevo hilo es un hilo de fondo.
Conjunto subproceso de fondo: thread.setDaemon (verdadero), el proceso debe comenzar antes de la llamada al método, de lo contrario IllegalThreadStateException parece anormal.

V. grupo de hilos y el temporizador
proporcionada en clase Timer paquete JDK java.util, pueden ser programados para realizar tareas particulares.
La clase TimerTask representa una tarea realizada por el temporizador.
Los métodos comunes:
Horario (TimerTask la tarea, de retardo largo, a largo plazo): programa la tarea especificada desde el principio después de un retardo especificado para la ejecución de retardo fijo repetida.
horario (tarea TimerTask, largo retraso) : programa la tarea especificada a la hora especificada

public class TimerDemo {
    public static void main(String[] args) {
        System.out.println("begin....");
        new Timer().schedule(new TimerTask() {
            @Override
            public void run() {
                System.out.println(new Date().toLocaleString());
            }
        },3000,1000);
    }
}

La salida:
Aquí Insertar imagen Descripción
. De clase ThreadGroup representa un grupo de hilos, puede ser una gestión centralizada de un conjunto de hilos
del usuario cuando se crea un objeto hilo, se puede especificar el grupo de hilos al que pertenece por el constructor.
El hilo (de ThreadGroup Grupo, String name);
si un subproceso crea hilo B, hilo B si el paquete no está establecido, entonces se añade B al grupo de hilos un hilo de rosca.
una vez que un grupo de hilos para unirse a un hilo, el hilo ha estado presente en el grupo de hilos hasta los troqueles de rosca, no se puede modificar el hilo en el medio de paquete.
cuando el programa Java se ejecuta, JVM creará un grupo llamado hilo principal, por defecto, todas las discusiones se cambian bajo el grupo de hilos.

Publicado 99 artículos originales · ganado elogios 2 · Vistas 2614

Supongo que te gusta

Origin blog.csdn.net/weixin_41588751/article/details/105229730
Recomendado
Clasificación