(1) la programación concurrente de Java programación concurrente reto artístico

¿Por qué la programación concurrente

Programación concurrente está diseñado para que el programa funcione más rápido. problemas concurrentes de programación encontradas, problema de cambio de contexto, callejón sin salida, y los recursos limitados por restricciones de hardware y software.

El cambio de contexto

Se pasará a la siguiente algoritmo de asignación de tareas por los ciclos de CPU para realizar el segmento del tiempo de trabajo, un segmento de tiempo de la ejecución de la tarea actual. Sin embargo, antes de conmutación será retenido en una tarea del Estado para el próximo estado a volver el interruptor a la tarea, a continuación, puede cargar esta tarea. Por lo que la tarea es salvar un cambio de contexto del proceso de recarga.

¿Cómo reducir el cambio de contexto

(1) sin concurrentes cerraduras de programación: cerraduras cuando la competencia multihilo, puede causar un cambio de contexto, el procesamiento multi-roscado de datos, algunos de los enfoque se puede utilizar para evitar el uso de una cerradura, tal como los datos de ID de acuerdo con el segmento algoritmo de Hash de módulo, diferentes hilos el procesamiento de datos en diferentes segmentos.
(2) Algoritmo CAS: paquete de Java utilizando el algoritmo Atómica CAS para actualizar los datos, no requiere de bloqueo.
(3) con un hilo mínimo: evitar la creación de hilos no deseados, tales como tarea pequeña, pero la creación de una gran cantidad de hilos de manejar, esto hará que un gran número de hilos están en un estado de espera
(4) corrutinas: En un solo subproceso programación multi-tarea en y mantener el cambio entre tareas múltiples en un solo hilo.

punto muerto

Thread t1 y t2 hilos en espera de uno al otro para liberar el bloqueo, haciendo que algunas funciones no se pueden utilizar, una vez que el punto muerto, el negocio se percibe, ya que u no puede seguir prestando servicios, y pueden ser vistos por hilo de volcado que se enroscan al final es un problema.

Varios método común de evitar estancamiento

(1) la adquisición de una pluralidad de hilos para evitar una cerradura
(2) para evitar una pluralidad de hilos ocupan simultáneamente recursos en la cerradura, cada cerradura ocupa sólo tratar de asegurar que un recurso
(3) usando la temporización de la tentativa, usando lock.tryLock (timeout) en lugar de utilizar el mecanismo de bloqueo interno
(4) debe estar conectado a una base de datos, de lo contrario la situación aparecería a fallar para desbloquear las cerraduras de base de datos, el bloqueo y desbloqueo

Publicado 24 artículos originales · ganado elogios 1 · visitas 550

Supongo que te gusta

Origin blog.csdn.net/qq_45366515/article/details/105092436
Recomendado
Clasificación