我正在为Nachos OS中的内核线程优化我的定时器中断函数。
简介here。
我有一个名为alarm的课程:
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>();
如何使优先级队列比较alarm类的wakeTime属性,并根据该属性生成最小堆。
在C ++中,我会重载运算符&lt;功能如下:
bool operator<(alarms a, alarms b){return a.wakeTime < b.wakeTime ? true : false;}
但我不确定如何在java中使用比较器。有人可以澄清我将如何比较java中的wakeTime属性吗?我是否需要让我的警报类实现Comparator类,或者我将如何实现它?
感谢您的时间! 最诚挚的问候,
答案 0 :(得分:1)
你就是这样做的。
public class Alarm implements Comparable<Alarm> {
@Override
public int compareTo(Object o) {
Alarm a = (Alarm) o;
return this.wakeTime - a.wakeTime ;
}
}