1

我正在优化 Nachos OS 中内核线程的定时器中断功能。

介绍在这里

我有一个名为警报的课程:

public alarms(long wakeTime, KThread my_thread)
{
    wakeTime=wakeTime;
    thread = my_thread;
}

public long getWakeTime()
{
    return wakeTime;
}

public KThread get_my_thread()
{
    return thread;
}

我还有一个基于最小堆的优先级队列:

Queue<alarms> my_alarms = new PriorityQueue<alarms>();

如何使优先级队列比较警报类的唤醒时间属性,并基于该属性生成最小堆。

在 C++ 中,我将重载 operator< 函数,如下所示:

bool operator<(alarms a, alarms b){return a.wakeTime < b.wakeTime ? true : false;}

但我不确定如何在 java 中使用比较器。有人可以澄清一下我将如何比较java中的wakeTime属性吗?我是否需要让我的警报类实现比较器类,或者我将如何去做?

感谢您的时间!此致,

4

1 回答 1

1

这就是你的做法。。

public class Alarm implements Comparable<Alarm> {
   @Override 
    public int compareTo(Object o) {
        Alarm a = (Alarm) o; 
        return this.wakeTime - a.wakeTime ;
    }
}
于 2013-04-22T04:25:06.567 回答