0
我正在研究Java中的離散事件模擬,與時間相關的代碼如下所示;Java中的離散事件模擬時間單位
class Event implements Runnable, Comparable {
double time;
Runnable runnable;
Event(double time, Runnable aRunnable) {
this.time = time;
runnable = aRunnable;
}
public boolean lessThan(Comparable y) {
Event e = (Event) y; // Will throw an exception if y is not an Event
return this.time <= e.time;
}
@Override
public void run() {
runnable.run();
}
}
class Simulator extends AbstractSimulator {
static Random rnd;
static double time;
double endTime;
static double now() {
return time;
}
Simulator(long seed, double simDuration) {
time = 0.0;
events = new ListQueue();
rnd = new Random(seed);
endTime = simDuration;
}
void doAllEvents() {
Event e;
while ((e = (Event) events.removeFirst()) != null && time < endTime) {
if(time > e.time)
System.out.printf("Something is worng! time=%f eventtime=%f",time,e.time);
time = e.time;
e.run();
System.out.printf("\n Time = %f", time);
}
}
我認爲基於事件失敗時的結果,但我需要使用一個單位的時候,我繪製。
Java用於模擬時間的單位是什麼?或者我可以將它們視爲第二個?或者是否有任何計算將其轉換爲真實的世界時間?
由於提前,
最好的問候,
UPDATE:
感謝您的答案,我試圖測量精確的時間,但我在這裏有一個問題。現有的虛擬仿真時間正在測量網絡壽命。它的作用與確切的時間不一樣。當我運行75個設備的模擬時,netorklifetime更短,可以說70.0,但實際時間超過35個設備,且擁有1500.0的壽命。發生這種情況是因爲每個設備的事件都在重複。
我在這裏需要找到虛擬模擬時間的單位。再次
謝謝...
注:實現可比'',不生'Comparable'。 –
對於時間我會使用System.nanoTime()(long)和TimeUnit類來呈現它們。 nanoTime()只是爲了測量流逝的時間 – efekctive