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方法栈日志的艺术:从错误定位到性能优化的深度指南
https://www.shuihudhg.cn/133725.html
PHP 获取本机端口的全面指南:实践与技巧
https://www.shuihudhg.cn/133724.html
Python内置函数:从核心原理到高级应用,精通Python编程的基石
https://www.shuihudhg.cn/133723.html
Java Stream转数组:从基础到高级,掌握高性能数据转换的艺术
https://www.shuihudhg.cn/133722.html
深入解析:基于Java数组构建简易ATM机系统,从原理到代码实践
https://www.shuihudhg.cn/133721.html
热门文章
Java中数组赋值的全面指南
https://www.shuihudhg.cn/207.html
JavaScript 与 Java:二者有何异同?
https://www.shuihudhg.cn/6764.html
判断 Java 字符串中是否包含特定子字符串
https://www.shuihudhg.cn/3551.html
Java 字符串的切割:分而治之
https://www.shuihudhg.cn/6220.html
Java 输入代码:全面指南
https://www.shuihudhg.cn/1064.html