java lograr tres métodos de productores y consumidores

Cuando el diseño y la implementación del modelo, tenemos que prestar atención a las tres preguntas siguientes:

Cuando la sincronización del recipiente y añada el producto a tomar el producto, es decir, en cualquier momento, añadiendo tomado son mutuamente excluyentes, y tomado cada vez es mutuamente operaciones exclusivas (operación de adición también es cierto).

Método 1:
Uso wait () y notify (), cuando el contenedor está lleno, los productores necesitan para la producción temporalmente parada hasta que el recipiente no está lleno, cuando el contenedor está vacío, los consumidores tienen que pasar temporalmente parada hasta que el recipiente no está vacío, un buffer después de esperar durante las llamadas llenos y vacíos del método wait (), hasta que los productores para producir un producto o un producto que el gasto del consumidor se despertará todos los hilos.

Método 2:
el método de señal () await () y, es decir, de manera de roscas.
cerradura reentrante se puede realizar (de ReentrantLock) a.
cerraduras reentrantes, también conocido como bloqueo recursiva, después de referirse a la misma rosca para adquirir la función de bloqueo de la capa exterior, la capa interior todavía función recursiva para adquirir el código de bloqueo, pero no se ve afectada.
En términos simples, la cerradura mantener esta uno relacionado con contador de bloqueo de acceso, si la cerradura ha sido un bloqueo de rosca de nuevo, el contador de adquisición se incrementa, el final de la barra llamada de función se decrementa en 1 y, a continuación, dos veces a las necesidades de bloqueo para ser lanzado obtener una liberación real.
Ya adquirió un hilo de bloqueo en el otro bloque sincronizado requiere la misma cerradura no será bloqueado.

Método 3:
para lograr la cola de bloqueo (BlockingQueue) a.
La condición principal se bloquea dos siguientes:
1. Cuando la cola está llena cuando se lleva en colas
2. Cuando el tiempo de cola para una operación de cola vacía

Cuando un hilo está lleno de bloquear la operación de cola en cola será bloqueado, a menos que haya otro hilo fue una operación de equipo, cuando un hilo se bloquea en una operación de retirada de cola cola de vacío será bloqueado, a menos que se un hilo en el equipo de operación. Por lo tanto, el bloqueo de cola es seguro para subprocesos.

Publicado 53 artículos originales · ganado elogios 5 · Vistas 435

Supongo que te gusta

Origin blog.csdn.net/qq_45287265/article/details/104991518
Recomendado
Clasificación