A, java multithreading resumir los conceptos básicos

En primer lugar, la diferencia entre hilos y procesos

1. El hilo es en realidad una ruta de ejecución, el proceso de aplicación es una aplicación independiente.

2. Un hilo es una ruta de ejecución, múltiples rutas de ejecución ejecutan simultáneamente, en el proceso, habrá N múltiples hilos, procesa el conjunto de todas las discusiones.

3. Utilice el propósito multi-roscado es mejorar la eficiencia del programa.

En segundo lugar, crear un enfoque multi-roscado (siguiendo tres métodos no son uno a uno ejemplo)

1. La primera es una herencia de clases de rosca, reemplazar el método de ejecución.

2. Implementar interfaz Ejecutable, reemplazar el método de ejecución.

3. Utilice una clases internas anónimas.

En tercer lugar, el hilo de utilidad

1.java en dos hilos, uno es el hilo de usuario, el otro es el guardián de la rosca.

1,1 hilo de usuario se refiere a hilos definidos por el usuario crea, el hilo principal de la parada, no se detendrá subprocesos de usuario.

1.2. Rosca Daemon cuando el proceso no existe o detener el hilo principal, se detendrá el demonio de hilo.

método (true) para establecer un hilo daemon 2. Uso setDaemon

3. Ejemplo de código

public class DaemonThread {
    public static void main(String[] args) {
        Thread thread = new Thread(new Runnable() {
            @Override
            public void run() {
                while (true) {
                    try {
                        Thread.sleep(100);
                    } catch (Exception e) {
                        // TODO: handle exception
                    }
                    System.out.println("我是子线程...");
                }
            }
        });
        thread.setDaemon(true);
        thread.start();
        for (int i = 0; i < 3; i++) {
            try {
                Thread.sleep(100);
            } catch (Exception e) {

            }
            System.out.println("我是主线程");
        }
        System.out.println("主线程执行完毕!");
    }
}

4. resultados

4.1 Conjunto de rosca . SetDaemon ( true ), los siguientes resultados:

我是子线程...
我是主线程
我是子线程...
我是主线程
我是子线程...
我是主线程
主线程执行完毕!

4.2 no establece la rosca . SetDaemon ( true ), los siguientes resultados (que era un hilo hijo ... (ha estado circulando)):

我是子线程...
我是主线程
我是子线程...
我是主线程
我是子线程...
我是主线程
主线程执行完毕!
我是子线程...
我是子线程...
我是子线程...

En cuarto lugar, el estado operativo multi-hilo

1. determinación Imagen

El hilo de la creación, siempre se ejecutan hasta el final en uno de los siguientes cinco estados: Nueva estado, estado listo, estado de ejecución, el bloqueo de estado y el estado de la muerte.

2. cada análisis estado

2.1 Nuevo Estado: Cuando se crea un hilo con el nuevo operador, por ejemplo, el nuevo hilo (r), el hilo no ha comenzado a correr, en este caso un nuevo estado hilo. Cuando un hilo se encuentra en el estado naciente, el código del programa que aún no ha empezado a correr hilo

2.2 estado preparado: un hilo de nueva creación no se inicia automáticamente, para ejecutar hilo, el hilo debe llamar al método start (). Al llamar método de inicio de tema objeto () para iniciar un hilo, es decir, crear un sistema de hilos de recursos método start () se ejecuta, y las discusiones de orden repetitiva método run (). Después de la salida () devuelve el método, el hilo está en el estado listo. Enhebrar un estado de preparación no necesariamente ejecutar inmediatamente método run (), el hilo también debe competir con otros tiempo de CPU hilo, tiempo de CPU antes de que puedan obtener único hilo en funcionamiento. Debido a que una sola CPU en un sistema informático, es imposible para ejecutar múltiples hilos simultáneamente, una vez sólo un hilo está ejecutando. Por lo tanto, en este momento puede haber múltiples hilos en el estado preparado. Múltiples hilos en el estado de lista se determina por el Java Runtime planificador de procesos del sistema ( el hilo Scheduler ) a lo programado.

2.3 Estado de funcionamiento: Cuando el hilo se pone el tiempo de CPU, antes de que se puso en funcionamiento el método, carrera comenzó realmente ().

2.4 estado bloqueado: el hilo durante el funcionamiento, puede entrar en el estado bloqueado debido a diversas razones:
        1> hilo a dormir llamando al sueño método;
        2> a subproceso de llamada es bloqueada en operaciones de I / O, es decir, la operación de entrada operación de salida no volverá a ella hasta la finalización de la persona que llama;
        3> hilo tratando de obtener un bloqueo, pero la cerradura está en poder de otro hilo;
        4> hilo está esperando una condición de disparo;

2.5 La muerte de estado: Hay dos razones por las que la muerte de rosca:
       1) salidas método run normalmente y de muerte natural.
       2) una excepción no capturada termina el método de hilo ejecutar la muerte súbita.
Con el fin de determinar si el hilo actual vivo (es decir, o se puede ejecutar ya sea ser bloqueado), utilizar el método isAlive. Si está ejecutando o bloqueado, devuelve true; si el hilo es todavía nuevo y se ejecuta el estado, o la muerte de un hilo, se devuelve falso.

Cinco, método join ()

1. Por ejemplo: cuando se realiza el método t1.join () en el que el hilo principal, el hilo principal que se debe dar la ejecución t1 derecha.

2. Caso Código:

public class DaemonThread {
    public static void main(String[] args) throws Exception {
        Thread t1 = new Thread(new Runnable() {
            @Override
            public void run() {
                for (int i = 0; i < 10; i++) {
                    try {
                        Thread.sleep(10);
                    } catch (Exception e) {

                    }
                    System.out.println(Thread.currentThread().getName() + "i:" + i);
                }
            }
        });
        t1.start();
        // 当在主线程当中执行到t1.join()方法时,就认为主线程应该把执行权让给t1
        t1.join();
        for (int i = 0; i < 10; i++) {
            try {
                Thread.sleep(10);
            } catch (Exception e) {

            }
            System.out.println("main" + "i:" + i);
        }
    }
}

3. resultados

Thread-0i:0
Thread-0i:1
Thread-0i:2
Thread-0i:3
Thread-0i:4
Thread-0i:5
Thread-0i:6
Thread-0i:7
Thread-0i:8
Thread-0i:9
maini:0
maini:1
maini:2
maini:3
maini:4
maini:5
maini:6
maini:7
maini:8
maini:9

4. Análisis: El primer hilo hijo está terminado, las principales concesiones de hilo, a continuación, ejecutar el hilo principal después de la finalización de la aplicación de la sub-hilo.

bienestar seis pequeños

1. Los procesos y los hilos de diferencia?

 A: El proceso es el conjunto de todos los hilos, cada hilo es un camino de proceso de ejecución, sino un camino de ejecución hilo.

2. ¿Por qué utilizar múltiples hilos?

 R: El programa para mejorar la eficiencia

herencia de clases 3. Hilo es bueno o implementar Runnable interfaces de buenas?

 R: Ejecutable interfaz es buena, ya que implementa la interfaz pueden seguir para heredar. herencia de clases hilo no puede ser heredada.

CONCLUSIÓN DE LA

1. Proyecciones artículo para explicar los problemas y soluciones de seguridad multi-hilo.

2. perseverante! ! ! Ja, ja, ja, ja ~ ~ ~

 

Publicados 122 artículos originales · ganado elogios 64 · Vistas a 50000 +

Supongo que te gusta

Origin blog.csdn.net/chenmingxu438521/article/details/103760703
Recomendado
Clasificación