java - 你如何在java中创建两个优先级队列数组?/Linux常量时间调度程序

标签 java linux multithreading scheduling

这是我作业中的一个步骤,看起来很简单,但对我来说似乎有点困惑。考虑到这件事明天到期,帮助会很大。代码格式响应会很棒。这是步骤:

您将需要创建两个优先级队列数组:一个主动数组和一个 过期数组。在我们的例子中,我们将简化并且只有 0 到 4 的优先级值,即 Activity 数组和过期数组将分别由 5 个队列组成。

最佳答案

Java 类是 PriorityQueue,而不是“优先级数组”。我想你误解了作业。

假设您有一个具有优先级值的对象,我们将在此处省略限制。你可以自己把它放进去。

public class Task {
    private Integer priority;  // Let's not have priorities change by accident.
    private String name;
    private double cost;
    // Constructors, getters, setters elided.
}

现在,PriorityQueue 需要属于 Comparable 类或由 Comparator 构成。让我们使用后者,因为我假设相同的优先级具有相同的权重,并且 Task 没有自然顺序。

public class TaskComparator implements Comparator<Task> {
    public int compare(Task left, Task right) {
        return left.getPriority() - right.getPriority();
        // Only because the numbers are limited. 
    }
}

你可以创建一个 PriorityQueue of Tasks

PriorityQueue<Task> active = new PriorityQueue<Task>(10, new TaskComparator());

你用这个做什么是你自己的了望。

关于java - 你如何在java中创建两个优先级队列数组?/Linux常量时间调度程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15627448/

相关文章:

c++ - Libusb如何从端口读取字符

java - 序列化 BoundStatement cassandra

java - JAX-RS:检索 ContainerRequestFilter 中的路径模式

java - 插入字符串的某些部分

java - 为什么这个线程在这种情况下不停止?

c++ - 为什么在单独的线程中使用信号量会卡住程序?

multithreading - TParallel.For : Store values in a TList while they are calculated in a TParallel. For 循环

java - 如何使用 NSIS 脚本在运行时读取属性文件?

c - 如何控制特定进程的 CPU 使用率?

c++ - 在 Linux 上编译 C++ 代码。需要使用intel/icpc编译器。错误: "multiple definitions" related to inerited class