1. hilos y procesos
Relaciones y diferencias entre los procesos y procedimientos
① programa es un conjunto ordenado de instrucciones, que no tiene ningún significado operacional, es un concepto estático. El proceso es un proceso de ejecución del programa en el procesador, es un concepto dinámico.
② programa de software se puede utilizar como un largo plazo existen datos, pero hay un cierto ciclo de vida del proceso. Programa es permanente, el proceso es temporal.
Nota: El programa puede ser visto como una receta, pero el proceso es el proceso de acuerdo con recetas para cocinar.
③ el proceso y los procedimientos de diferentes: procesos por un bloque de control de programa, datos, y el proceso se compone de tres partes.
④ correspondencia entre el proceso y los procedimientos: mediante la repetición, un programa puede tener múltiples procesos; por relaciones llamamiento, un proceso que puede incluir más de un programa.
2. La diferencia entre el paralelo y concurrente
- Una explicación: se refiere a dos o más eventos paralelos se producen al mismo tiempo, y se refiere a dos o más eventos simultáneos se producen al mismo intervalos de tiempo.
- Explicar dos: Parallel múltiples eventos en diferentes entidades, concurrentes múltiples eventos en la misma entidad.
- Explica tres: en un procesador paralelo es "simultáneo" para manejar múltiples tareas, es al mismo tiempo manejar múltiples tareas de forma simultánea en múltiples procesadores. Como clúster hadoop distribuida.
3. Crear un modo de hilo
4. manera de crear un grupo de subprocesos
ScheduledThreadPool = Executors.newScheduledThreadPool El ScheduledExecutorService (3. ); ScheduledThreadPool.schedule (newRunnable () { @ Override pública vacío run () { System.out.println ( "retraso de tres segundos" ); } }, 3. , TimeUnit.SECONDS); scheduledThreadPool .scheduleAtFixedRate (newRunnable () { @ Override público void run () { System.out.println ( "uno de retardo de segundo cada tres segundos para realizar un" ); } }, l, 3, TimeUnit.SECONDS);
5. ciclo de vida de rosca (estado)
Cuando se crea e inicia el hilo, no es ni un comienzo para entrar en el estado de ejecución, ni se ha estado en un estado de ejecución. En el hilo del ciclo de vida, tiene que pasar por Nueva (New), Ready (Ejecutable), correr (correr), bloqueado (Bloqueado) y la muerte (Dead) 5 estados. Sobre todo cuando después de que las roscas de entrada, no puede haber sido "ocupada" la CPU para ejecutar solos, por lo que la necesidad de cambiar entre varios subprocesos de CPU, por lo que el estado de rosca se ejecutará varias veces para cambiar entre el bloqueo
6.sleep y espera diferencia
7.Inicie y correr diferencia
El papel de la palabra clave 8.volatile (visibilidad variable prohibir la reordenación)
9. El principio de la primera ocurrencia
1, la secuencia de programa de reglas. En un libro de códigos EDITORIAL hilo de antemano ocurrido en la parte posterior. Más bien debe ser, de acuerdo con el flujo de control de orden del programa, debido a que algunos estructura ramificada.
2, reglas variables volátiles. En unas variables de volátiles, a escribir su primera ocurrió en la operación de lectura.
3, el hilo empezar regla. comienzo de la rosca () del objeto método primera aparición en este hilo cada movimiento.
4, el subproceso termina reglas. Todas las operaciones están por delante de la terminación del hilo se produce en la detección de este hilo.
5, rotura de hilo reglas. Llame a hilo de interrupción () para la primera aparición se detecta evento de interrupción código hilo de interrupción.
6, la terminación objeto reglas. Inicializar un objeto se completa (final del constructor línea) comienza método finilize emitido () de la primera ocurrencia.
7, transitiva. A primera ocurrencia de B, B C se produce primero, a continuación, C. A ocurre primero
8, el tubo de reglas de bloqueo. La cara de la cerradura con una operación de bloqueo después de una primera operación de desbloqueo se produce.
10. El método de las llamadas entre procesos y subprocesos
cerradura común 11.java
12.synchronized principio implementación subyacente
Lo 13.synchronized y la diferencia es ReentrantLock?
- la competencia sincronizada siempre estará a la espera de una cerradura; ReentrantLock puede tratar de adquirir el bloqueo y llegar llegar resultados
- sincronizado adquisición de la cerradura no se puede establecer el tiempo de espera; ReentrantLock puede establecer el tiempo de espera para adquirir un bloqueo
- equidad sincronizada no se puede lograr de bloqueo; cerraduras ReentrantLock se encuentran justo, lo que es de esperar para entrar en la cerradura
- y control espera sincronizadas wakeup espera objeto de bloqueo (unión) y notificar (), notifyAll (); ReentrantLock y control espera para un wakeup Condición de unión a la await () y la señal (), el método signalAll ()
- nivel JVM sincronizado se consigue; ReentrantLock JDK es el nivel de código para lograr
- ejecutar el bloque de código sincronizado en la cerradura o anormal, liberar automáticamente el bloqueo; de ReentrantLock no libera automáticamente el bloqueo, es necesario finally {} de bloques muestra la liberación
14.ReentrantReadWriteLock bloqueo de lectura-escritura detallada
Implementación cola de bloqueo 15.BlockingQueue