El bloqueo y el bloqueo de pila de espera

El bloqueo de cola

cola de bloqueo de contenido se complica por las nuevas características de Java 5, la cola de bloqueo de interfaz es java.util.concurrent.BlockingQueue, tiene múltiples clases de implementación: ArrayBlockingQueue, DelayQueue, LinkedBlockingQueue, PriorityBlockingQueue, SynchronousQueue otro uso similar, específicamente para ver el JDK documento, aquí un simple vistazo ArrayBlockingQueue ejemplo, que implementa una cola acotada, cuando la cola está llena, se bloqueará hasta que hay elementos de equipo, el seguimiento de los elementos puede ser añadido a la cola.

Vea los siguientes ejemplos:

público  clase BlockingQueueTest {
     público  estáticas  void principales (String [] args) lanza InterruptedException { 
        BlockingQueue <String> bqueue = nuevo nuevo ArrayBlockingQueue con <String> (20 es );
         para ( int i = 0; I <30; I ++ ) {
             // el especificado este elemento de la cola 
            bqueue.put ( "" + I); 
            System.out.println ( "elemento añadido a la cola de bloqueo:" + I);
             SI (I> 18 es ) {
                 // Obtener el equipo de la cola elemento de cabeza, y fuera de sus colas 
                System.out.println ( "elemento de bloqueo se retira de la cola:"+bqueue.take ()); 
            } 
        } 
        System.out.println ( "fin ejecutar este programa, punto de salida ----" ); 
    } 
}

Como puede verse a partir de los resultados, cuando se añade después de los primeros 20 elementos, primer elemento se retira de un equipo, por lo que podemos continuar para añadir elementos a la cola después de cada añadir un elemento, el elemento comienza con la eliminación del primer equipo, por lo programa puede realizar fin.

 

pila bloqueada

El bloqueo y el bloqueo de pila de espera es similar, excepto que es una nueva característica añadida en Java 6, el bloqueo de las interfaces de pila java.util.concurrent.BlockingDeque hay muchos clase de implementación, utilizando un método similar es también punto de vista más específico documentación del JDK.

público  clase BlockingDequeTest {
     público  estáticas  void principales (String [] args) lanza InterruptedException { 
        BlockingDeque <String> bDeque = nuevo nuevo LinkedBlockingDeque con <String> (20 es );
         para ( int i = 0; I <30; I ++ ) {
             // el especificado elemento de bloqueo para esta pila 
            bDeque.putFirst ( "" + I); 
            System.out.println ( "añadido al bloqueo de pila elemento:" + I);
             SI (I> 18 se ) {
                 // de bloqueo de la pila retirar el elemento superior, y que se elimine 
                System.out.println ( "bloqueando el elemento de la pila:"+bDeque.pollFirst ()); 
            } 
        } 
        System.out.println ( "fin ejecutar este programa, punto de salida ----" ); 
    } 
}

Como puede verse a partir de los resultados, cuando se añade después de los primeros 20 elementos, que son, de modo que podemos continuar para añadir elementos a la pila desde el elemento superior del turno, después de cada añadir un elemento, poner el elemento superior es retirado, por lo que el programa de puede realizar fin.

 

Fuente de referencia :. Jike complicado por nuevas características - el bloqueo y el bloqueo de pila de espera

Supongo que te gusta

Origin www.cnblogs.com/ooo0/p/12456811.html
Recomendado
Clasificación