首先,这是我的一个课程中一项庞大的编程任务的一小部分。
我有 10 个不同的优先级队列。像prio1,prio2,prio3。这些队列中的每一个都按进程号排序。
如果我想检查优先级为 3 的进程#16 是否需要用更高优先级的进程替换,最简单的方法是什么?
private static void checkHigherQueues( int runningPrio, int runningPid, int cpu ){
for( int i = 1; i < 11; i++){
if ( prio(i).peek() == null ){
}else if( prio(i).peek() < runningPid && i == runningPrio){
release from cpu....
}
回答一些问题:
我为每个优先级使用不同的队列,因为我不知道您可以使用两个比较器进行优先级队列排序。这是我用于队列的代码,如何将其更改为先按优先级排序,然后按 pid 排序?
prio1 = new PriorityQueue<>(1, new Comparator<String>() {
@Override
public int compare( String x, String y ){
int first = Integer.parseInt(x);
int second = Integer.parseInt(y);
return second - first;
}
});