Resumen basado en multihilo siete, java

En primer lugar, productos secos

Tres elementos 1. Programación Concurrente

<1> átomo de: Atomicidad se refiere a una o más operaciones, y la realización de cualquiera de todas las demás operaciones no se interrumpe durante la ejecución, o a todos sin ejecución.

<2> Visibilidad: la visibilidad se refiere a una pluralidad de hilos que operan una variable compartida, en el que la variable de modificar un hilo, otros hilos pueden ver inmediatamente los resultados de los cambios.

<3> Orden: pedido, es decir, el orden de ejecución del código de programa en el orden realiza.

2. El método para lograr la visibilidad de lo

sincronizada o Bloqueo: para asegurarse de que sólo un hilo al mismo tiempo adquirir la ejecución del código de bloqueo, antes del lanzamiento del último valor de la cerradura se sonrojó a la memoria principal, para lograr la visibilidad.

Comparación de tres métodos 3. Crear un hilo

<1>. Usos dan cuenta Ejecutable, así que se puede llamar para crear interfaz multi-hilo.

Ventajas: implementa la clase subproceso de interfaz Ejecutable o simplemente interfaz invocable, también se pueden heredar de otras clases. De esta manera, múltiples hilos pueden compartir el mismo objeto de destino, es la misma para una pluralidad de hilos para hacer frente a un caso en que los mismos recursos, que pueden separarse para formar un modelo claro de la CPU, de código y de datos, para reflejar mejor la pensamiento orientado a objetos.

Desventajas: la programación un poco más compleja, si desea acceder al hilo actual, debe utilizar el método Thread.currentThread ().

<2> El uso del hilo de manera herencia de clases para crear múltiples hilos

Ventajas: fácil de escribir, si necesita acceso a la hebra actual, no es necesario utilizar el método Thread.currentThread (), el uso directo de este para obtener el hilo actual.

Desventajas: la clase Thread clase Thread ha sido heredado, por lo que no pueden heredar otro padre.

Diferencia <3> .Runnable y una Callable

3.1) .Callable predeterminado (override) es una llamada al método (), Ejecutable predeterminado (se ejecuta método de reemplazo) ().

3.2) después de la ejecución de la tarea .Callable puede devolver un valor, pero no es tarea Ejecutable el valor de retorno.

3.3) .Llame método puede lanzar una excepción, el método de ejecución no puede.

3.4). Ejecutar la tarea rescatable puede obtener un objeto futuro que representa el resultado de un cálculo asíncrono. Proporciona un método de comprobación de cálculo es completa, a esperar a la finalización del cálculo, y el cálculo del resultado de búsqueda. Por Future objeto puede comprender la ejecución del mandato, para cancelar la ejecución de la tarea, sino también obtener los resultados.

4. El estado del diagrama de flujo hilo

ciclo de vida y cinco estado básico de la rosca:

å²ä¸æ强å¤çº¿ç¨é è¯47é ¢ ¢ (un "çæ¡) ï¼å» ºè®®æ¶è

1) un nuevo estado (Nuevo) : Después de que el objeto creado cuando un hilo que entra en el nuevo estado, tales como: Thread t = new MyThread () ;

2) el estado preparado (Ejecutable) : Cuando el método start () (t.Start (el objeto subproceso de llamada);), el hilo que es estado preparado. Hilo en el estado preparado, es ilustrativa de este hilo está listo, en espera de la CPU programado para su ejecución en cualquier momento, no quiere decir que la aplicación de la t.Start () Este hilo se ejecutará inmediatamente;

3) el estado de ejecución (Running) : Cuando la programación de subprocesos de la CPU se pone en marcha en un estado preparado, y esta vez fue capaz de ejecutar realmente los hilos que van en modo de ejecución. Nota: listo estado es el único medio de acceso al estado de funcionamiento, es decir, la ejecución del hilo con el fin de entrar en el estado de ejecución, en primer lugar debe estar en un estado de preparación;

4) estado de bloqueo (bloqueado) : correr el hilo por alguna razón, abandonar temporalmente el derecho de uso de la CPU, detener la ejecución, esta vez en el bloque hasta que entra en el estado preparado, tener la oportunidad de ser llamado de nuevo CPU para entrar en el modo de marcha.

Dependiendo de la razón para el bloqueo generado, estado de bloqueo se puede dividir en tres tipos:

1. Espere bloqueo: un hilo de funcionamiento en estado de espera de ejecución método (), de modo que el hilo entra en la obstrucción estado de espera;

2. bloqueo síncrono - fallo de bloqueo de sincronización hilo en la obtención de sincronizado (porque la cerradura estaba ocupado por otro hilo), entrará en el estado de bloqueo síncrono;

3. Otros bloqueado - por el sueño () o unirse al hilo llamando al () o solicitud de E / S emitida, el hilo en el estado bloqueado. Cuando el sueño () de tiempo de espera, el Ingreso () o una espera de tiempo de espera para un hilo para terminar, o I / O se ha completado el procesamiento, el hilo en el estado listo de nuevo.

5) estado de muerte (Dead) : ejecución del hilo es de más o debido a la salida anormal del método run (), el extremo del hilo del ciclo de vida.

5. Pase saber un hilo B de cómo modificar las variables

1) las variables .volatile modificadores

2) método de modificación .synchronized modificar las variables

3) .wait / notificar

4) .while encuesta (temporalmente no se utiliza)

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

Supongo que te gusta

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