Java中有计时器吗?
在谷歌上,我只找到了不起作用的计时器代码 - 它们总是返回0毫秒。
我找到的这段代码不起作用,而且我不知道为什么。
public class StopWatch {
private long startTime = 0;
private long stopTime = 0;
private boolean running = false;
public void start() {
this.startTime = System.currentTimeMillis();
this.running = true;
}
public void stop() {
this.stopTime = System.currentTimeMillis();
this.running = false;
}
//elaspsed time in milliseconds
public long getElapsedTime() {
long elapsed;
if (running) {
elapsed = (System.currentTimeMillis() - startTime);
} else {
elapsed = (stopTime - startTime);
}
return elapsed;
}
//elaspsed time in seconds
public long getElapsedTimeSecs() {
long elapsed;
if (running) {
elapsed = ((System.currentTimeMillis() - startTime) / 1000);
} else {
elapsed = ((stopTime - startTime) / 1000);
}
return elapsed;
}
}
currentTimeMillis()
,因为它与系统日期/时间相关,并且不能保证单调递增(例如,您可能会获得负的经过时间)。用于测量时间请使用nanoTime()
-它保证单调递增并且专门用于测量目的。请参见https://docs.oracle.com/javase/8/docs/api/java/lang/System.html#nanoTime-- - Nikita Bosik