Java 秒表实现:精准计时与效率279


简介

Java 中实现秒表功能非常有用,从测量代码执行时间到创建简单计时器,都有广泛的应用场景。本教程将深入探讨如何使用 Java 编写一个功能强大的秒表,涵盖从基本实现到高级扩展。

基本实现:()

Java 提供了一个简单的方法来获取当前时间的毫秒数:()。我们可以使用该方法来记录开始和结束时间,然后计算两者之间的差异以获取经过的毫秒数。
import ;
public class BasicStopwatch {
private long startTime;
private long endTime;
public void start() {
= ();
}
public void stop() {
= ();
}
public long getElapsedTime() {
return - ;
}
}

更精确的实现:

() 使用毫秒精度,对于大多数情况下可能足够了。但是,如果您需要更高的精度,可以使用 。它允许您使用纳秒(十亿分之一秒)的精度来记录时间。
import ;
import ;
public class PreciseStopwatch {
private Instant startTime;
private Instant endTime;
public void start() {
= ();
}
public void stop() {
= ();
}
public Duration getElapsedTime() {
return (, );
}
}

暂停和恢复秒表

有时您可能需要暂停正在运行的秒表,然后在稍后恢复。为此,我们可以在秒表类中添加额外的字段来跟踪暂停时间。
public class PausableStopwatch extends PreciseStopwatch {
private boolean isPaused;
private Instant pauseStartTime;
private Instant pauseEndTime;
public void pause() {
if (!) {
= ();
= true;
}
}
public void resume() {
if () {
= ();
= (());
= false;
}
}
}

显示格式化时间

除了返回原始毫秒或纳秒值外,我们还可以格式化结果以更具可读性。例如,我们可以将时间转换为以时、分、秒和毫秒为单位的字符串。
public String getFormattedElapsedTime() {
long elapsedMillis = ().toMillis();
long hours = elapsedMillis / (60 * 60 * 1000);
long minutes = (elapsedMillis / (60 * 1000)) % 60;
long seconds = (elapsedMillis / 1000) % 60;
long millis = elapsedMillis % 1000;
return ("%02d:%02d:%02d.%03d", hours, minutes, seconds, millis);
}

高级功能:回调和事件监听器

对于更高级的用途,您可以向秒表添加回调函数或事件监听器,以便在特定时间间隔或当秒表发生特定事件时执行特定操作。
public interface StopwatchListener {
void onInterval(long elapsedTime);
void onFinished();
}
public class EventDrivenStopwatch extends PausableStopwatch {
private List listeners;
public void addListener(StopwatchListener listener) {
(listener);
}
@Override
public void start() {
();
for (StopwatchListener listener : ) {
(());
}
}
@Override
public void stop() {
();
for (StopwatchListener listener : ) {
();
}
}
}


本文提供了使用 Java 实现秒表功能的分步指南,涵盖了从简单实现到高级扩展的各个方面。通过遵循这些步骤,您可以创建精确且可定制的秒表,满足您的特定需求。

2024-12-02


上一篇:Java 编码手册:最佳实践、风格指南和约定

下一篇:Java 自定类数组:打造高效灵活的数据结构