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;
}

min-heap ベースのプライオリティ キューもあります。

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属性を比較する方法を誰かが明確にしてもらえますか? アラーム クラスに Comparator クラスを実装する必要がありますか、それともどうすればよいですか?

お時間をいただきありがとうございます!よろしくお願いします、

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 に答える