Desde la estación de tren de excursiones pública barra de aprender a leer y escribir bloquea Java

concurrencia de Java multi-roscado de bloqueo de lectura-escritura

Los contenidos principales son: bloqueo de lectura-escritura teórica; entender el bloqueo de escritura a través del ejemplo de vida; código de escritura demuestra la cerradura, lectura-escritura Resumen de bloqueo. Por la teoría (resumen) - - ejemplos de código - sumadas entonces de nuevo, estos cuatro pasos para dejar cada uno profunda comprensión del bloqueo de lectura-escritura.

Benpian son: Título VII, "Kaige (Kaige Java kagejava) aprender programación concurrente" "serie Lock" serie de tutoriales: "contrato de Java bajo llave y el aprendizaje Título VII:. Bloqueo de lectura-escritura"

A: la teoría de bloqueo de lectura-escritura

¿Cuál es el bloqueo de lectura-escritura?

Varios subprocesos para leer un recurso no es ningún problema, por lo que a fin de cumplir en el caso de lectura simultánea los recursos compartidos deben hacerse al mismo tiempo, sin embargo, si un hilo quiere escribir para compartir recursos, no debería ser hay otros hilos pueden leer el recurso compartido o una operación de escritura.

Ese bloqueo de lectura-escritura al mismo tiempo que permite el acceso de varios subprocesos múltiples, pero en el momento de escribir el acceso hilo, todos los hilos de lectura y escritura de otros hilos se bloquean. Lectura-escritura encierra el mantenimiento real de una cerradura, un bloqueo de lectura, un bloqueo de escritura, mediante la separación de los bloqueos de lectura y escritura, por lo que es la concurrencia de bloqueo exclusivo (bloqueo exclusivo) se ha mejorado mucho.

¿Por qué necesitamos para leer y bloqueo de escritura?

A través del estudio del artículo anterior, sabemos ReentrantLock (en lo sucesivo: RLock) los objetos. RLOCK de (Sync en adelante abreviado) sincronizada, tiene tres ventajas: RLock puede estar interrumpido; RLOCK justo puede bloquear; RLOCK se puede unir una pluralidad de condiciones. Bueno, ya que RLock de sincronización tiene tantas ventajas, ¿por qué necesita para leer y bloqueo de escritura que?

Esto es así porque la cerradura RLock es exclusiva (exclusivo), es decir, cuando el hilo 1 para obtener recursos cuando otros hilos no pueden operar de nuevo los recursos compartidos. Incluso operación RLock es el tiempo para leer otros hilos no se puede leer con el recurso. Lo que en la vida real no es lógico (en el ejemplo siguiente cerraduras mitología de escritura, podemos apreciar por qué lo ilógico), y el rendimiento es más lento. Por lo que no es el surgimiento de bloqueo de lectura-escritura.

II: bloqueo de lectura-escritura apreciada

ejemplos de la vida de bloqueo de lectura-escritura

Ejemplo 1: Que cada uno paseo a la estación de tren, había una pantalla de gran público le dirá si los retrasos de trenes actuales. Visible es ofrecer a todos los pasajeros para ver si el tren era tarde, que corresponde a la parte posterior de los viajes será modificado a aproximadamente xxx minutos finales. Esta acción sólo puede ser modificada personal interno para operar la estación de tren, los pasajeros son inoperables. Este proceso, de pie vista concurrente para analizar las palabras: Los datos de pantalla electrónica es compartida; pasajeros miles de diferentes temas; el personal de la estación de tren de la casa es también diferentes hilos, los pasajeros están leyendo hilo recurso cuando un hilo cuando se lee otros hilos también puede leer las operaciones; personal interno para modificar la estación de tren cuando la información de tren, pero sólo un miembro del personal para modificar, tanto no puede ser modificado. Si ambos son modificados, a continuación, a última hora de la segunda 1min pantalla, al segundo siguiente pantalla correctamente. Esto no es suficiente, los pasajeros pueden pasar por el paseo. Así que cuando se modifica al mismo tiempo que sólo puede ser modificada por un miembro del personal.

Ejemplo 2: Estamos jugando rey de gloria cuando, a veces se encuentran dejan de tomar la actualización. Antes no actualización, todos los jugadores pueden jugar, cuándo dejar de tomar la actualización, todos los jugadores no pueden jugar. El punto de funcionamiento en paralelo de vista: el jugador está leyendo millones de recursos compartidos; juego mantenedor es una operación de escritura. Cuando deje de tomar la actualización de la operación de lectura fue bloqueado, sólo puede esperar a que la operación de escritura, es decir, la actualización se ha completado, entonces podemos jugar.

Podemos analizar los dos ejemplos de arriba para leer y escribir entrelaza tres participantes: compartir recursos; objetos leídos; objeto de escritura. Y la lectura y la escritura son generalmente separados.

Tres: código de bloqueo de lectura-escritura demuestra

Vamos a utilizar el caso para simular la parada de la estación de tren:

 

Bloquee cuando no esté en uso

Echemos un vistazo a los objetos de la imagen:

 

Veamos más personal y más pasajeros consiguen operaciones de actualización:

 

Ver los resultados:

 

A partir de los resultados operativos, podemos encontrar trabajo cuando el número de viajes no ha terminado de actualizar la información no 13 cuando los empleados trabajan 12 y 14 también se puede actualizar. No se permite esta operación. Debido a escribir la atomicidad, monopolizar. Un modifica cuando un miembro del personal en el momento Cuando se dispara la información, el resto del personal no puede modificar la misma información de los viajes. Y la obtención de información de los datos de trenes de pasajeros, adquiridos número de trabajo solamente es 13. Tiempo para obtener estos datos no es necesariamente cierto para. Por lo tanto, no utilice el bloqueo no funciona.

Utilizar bloqueos exclusivos

Si utiliza el do exclusiva así, vemos los resultados:

 

A partir de los resultados que se ejecutan, cuando relectura, es necesario leer uno por uno. Cuando los 16 pasajeros ver, y 17 pasajeros no se puede ver. Esto no es coherente con la lógica de negocio real. Por lo tanto, exclusivo (bloqueo exclusivo) RLock no apropiado aquí. Nos fijamos en las cerraduras de lectura y escritura:

cerraduras de lectura y escritura

Echemos un vistazo a la utilización de objetos de la pantalla de bloqueo de lectura y escritura

 

Echemos un vistazo a los resultados:

 

A partir de los resultados operativos, podemos ver que el personal está operando una completado. Cuando se ha completado la operación después de 14, 13 y 12 puede operar. Este símbolo de nuestra actividad normal. Cuando los pasajeros leer, leer es la última actualización, esto también está en línea con nuestro negocio. Por lo tanto, la estación operada por la pantalla de bloqueo de lectura-escritura es posible.

 

Cuatro: lectura-escritura Resumen de bloqueo

objeto de clase wrLock: 4.1

 

También contiene cerradura de bloqueo justo e injusto.

ReadLock que es un bloqueo de lectura objetos, objeto de bloqueo WriteLock escritura.

4.2: utilizando la sintaxis

Leer utiliza ReadLock

editar

Cuando la operación de escritura, objetos de uso WriteLock:

 

4.3: Resumen

bloqueo de escritura (ReentrantReadWriteLock), abreviado a Kaige rwlock. También puede lograr una justa y no justo. Mantiene su interior un par de bloqueo: un bloqueo de lectura (objeto ReadLock), un bloqueo de escritura (objetos WriteLock) para mejorar la concurrencia de lectura separado y de manera escritura. cerraduras de lectura y escritura, también conocidos como bloqueos compartidos. Es compartido al leer los datos, permite que varios subprocesos leen simultáneamente operación. Exclusiva en el momento de la escritura, la otra operación de lectura o escritura debe ser bloqueada.

En circunstancias normales, el rendimiento de los bloqueos de lectura y escritura se encerrarlo mejor rendimiento que la fila, es porque, la mayoría de las escenas de leer que las operaciones de escritura. En las cerraduras de lectura y escritura de múltiples escena, lectura y escritura pueden proporcionar mejor que bloqueo exclusivo y el rendimiento y la productividad.

    Bienvenidos al chat ~

 

Supongo que te gusta

Origin www.cnblogs.com/kaigejava/p/12651268.html
Recomendado
Clasificación