import java.util.Locale; public class TimeTracker { private final String trackerName; private Long startTime; // 构造方法,可指定追踪器名称 public TimeTracker() { this.trackerName = Thread.currentThread().getName() + "-Tracker"; } public TimeTracker(String name) { this.trackerName = name + "-" + Thread.currentThread().getName(); } public void start() { this.startTime = System.currentTimeMillis(); System.out.println("[" + trackerName + "] 开始时间: " + KentDataTime.getYYMMDDHHMMSSSSSString()); } public void end() { if (startTime == null) { System.err.println("[" + trackerName + "] 警告: 请先调用 start()"); return; } System.out.println("[" + trackerName + "] 结束时间: " + KentDataTime.getYYMMDDHHMMSSSSSString()); System.out.println("[" + trackerName + "] " + formatDuration(System.currentTimeMillis() - startTime)); startTime = null; // 重置,允许重复使用 } public String getElapsedTime() { if (startTime == null) return "未开始"; return formatDuration(System.currentTimeMillis() - startTime); } private String formatDuration(long durationMillis) { long totalSeconds = durationMillis / 1000; long minutes = totalSeconds / 60; long seconds = totalSeconds % 60; long millis = durationMillis % 1000; return String.format(Locale.CHINA, "花费了 %02d:%02d.%03d (共%dms)", minutes, seconds, millis, durationMillis); } } // 使用示例 public class Example { public static void main(String[] args) { // 每个对象独立计时 TimeTracker tracker1 = new TimeTracker("任务A"); TimeTracker tracker2 = new TimeTracker("任务B"); tracker1.start(); // ... 执行任务A tracker1.end(); tracker2.start(); // ... 执行任务B tracker2.end(); } }