El uso de la cola de subprocesos de Java -SynchronousQueue

SynchronousQueue es una cola de bloqueo especial que no tiene capacidad, lo que significa que cada operación de inserción debe esperar una operación de obtención y viceversa. No almacena los elementos, sino que los pasa directamente al subproceso del consumidor. Puede elegir si exigir equidad o no. Si el parámetro justo se establece en verdadero, los subprocesos accederán a la cola en orden FIFO; de lo contrario, el orden de acceso no está definido.

SynchronousQueue se puede usar para implementar el intercambio síncrono entre subprocesos. Por ejemplo, el siguiente código crea un SynchronousQueue y pasa una cadena entre dos subprocesos.

import java.util.concurrent.SynchronousQueue;

public class SynchronousQueueDemo {
    public static void main(String[] args) {
        // 创建一个同步阻塞队列
        SynchronousQueue<String> sq = new SynchronousQueue<>();
        // 创建一个生产者线程,向队列中插入一个字符串
        new Thread(() -> {
            try {
                System.out.println("Trying to put hello into queue");
                sq.put("hello");
                System.out.println("Successfully put hello into queue");
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }, "producer").start();
        // 创建一个消费者线程,从队列中获取一个字符串
        new Thread(() -> {
            try {
                System.out.println("Trying to take from queue");
                String s = sq.take();
                System.out.println("Successfully take " + s + " from queue");
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }, "consumer").start();
    }
}

Resultado de salida:

Trying to put hello into queue
Trying to take from queue
Successfully take hello from queue
Successfully put hello into queue

Como puede ver, el subproceso productor se bloquea después de insertar la cadena hasta que el subproceso consumidor obtiene la cadena de la cola. Del mismo modo, la línea de consumo

Supongo que te gusta

Origin blog.csdn.net/caicai250/article/details/131441646
Recomendado
Clasificación