内核线程定时器中断的优先级队列实现

时间:2013-04-22 04:15:59

标签: java algorithm class data-structures operating-system

我正在为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类,或者我将如何实现它?

感谢您的时间! 最诚挚的问候,

1 个答案:

答案 0 :(得分:1)

你就是这样做的。

public class Alarm implements Comparable<Alarm> {
   @Override 
    public int compareTo(Object o) {
        Alarm a = (Alarm) o; 
        return this.wakeTime - a.wakeTime ;
    }
}