首先,这只是我其中一个课程中一个庞大的编程作业的一小部分。
我有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;
}
});