【问题标题】:Priority Queue Implementation for Kernel Thread Timer Interrupt内核线程定时器中断的优先级队列实现
【发布时间】:2013-04-14 21:31:33
【问题描述】:

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

简介here

我有一个类叫警报:

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>();

如何让优先队列比较告警类的wakeTime属性,并以此为基础生成最小堆。

在 C++ 中,我会重载 operator

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

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

感谢您的宝贵时间! 最好的问候,

【问题讨论】:

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


    【解决方案1】:

    这就是你的做法..

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

    【讨论】:

    • 应该将其投射到警报,而不是人。
    猜你喜欢
    • 1970-01-01
    • 2012-11-26
    • 1970-01-01
    • 2011-07-29
    • 1970-01-01
    • 2017-05-04
    • 2015-01-06
    • 1970-01-01
    • 2011-06-09
    相关资源
    最近更新 更多