Uso de la cola de subprocesos de Java -PriorityBlockingQueue

PriorityBlockingQueue es una cola de bloqueo ilimitada de prioridad cuyos elementos deben implementar la interfaz Comparable o especificar un objeto Comparator al crearlo. Se ordenará de acuerdo con el orden de prioridad de los elementos, y los elementos con mayor prioridad se buscarán primero.

PriorityBlockingQueue se puede usar para implementar la programación de tareas prioritarias. Por ejemplo, el siguiente código crea un PriorityBlockingQueue y le agrega cuatro tareas, cada una con una prioridad diferente. Luego realiza un bucle para obtener tareas de la cola y las imprime.

import java.util.concurrent.PriorityBlockingQueue;

// 定义一个任务类,实现Comparable接口
class Task implements Comparable<Task> {
    // 任务名称
    private String name;
    // 任务优先级
    private int priority;

    // 构造方法,传入任务名称和优先级
    public Task(String name, int priority) {
        this.name = name;
        this.priority = priority;
    }

    @Override
    public int compareTo(Task o) {
        // 比较优先级,优先级大的排在前面
        return Integer.compare(o.priority, this.priority);
    }

    @Override
    public String toString() {
        return "Task{" +
                "name='" + name + '\'' +
                ", priority=" + priority +
                '}';
    }
}

public class PriorityBlockingQueueDemo {
    public static void main(String[] args) {
        // 创建一个优先级阻塞队列
        PriorityBlockingQueue<Task> pbq = new PriorityBlockingQueue<>();
        // 向队列中添加四个任务,注意它们的优先级
        pbq.offer(new Task("task1", 5));
        pbq.offer(new Task("task2", 2));
        pbq.offer(new Task("task3", 7));
        pbq.offer(new Task("task4", 3));
        // 从队列中循环获取任务,并打印出来
        while (pbq.size() > 0) {
            try {
                System.out.println(pbq.take());
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

Resultado de salida:

Task{name='task3', priority=7}
Task{name='task1', priority=5}
Task{name='task4', priority=3}
Task{name='task2', priority=2}

Se puede observar que las tareas de la cola se obtienen por orden de prioridad, es decir, se obtiene primero la tarea de mayor prioridad y en segundo lugar la tarea de menor prioridad.

おすすめ

転載: blog.csdn.net/caicai250/article/details/131441615