2013-04-22 51 views
1

我正在爲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++中我將如下超負荷運營商<功能:

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

但我不知道如何與Java中的比較工作。有人可以澄清我將如何比較java中的wakeTime屬性?我是否需要讓我的警報類實現Comparator類,或者我將如何去做這件事?

謝謝你的時間! 最好的問候,

回答

1

這是你怎麼做..

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

也許應該將它轉換到警報,而不是人。 – ddmps 2013-04-22 04:27:23