在内存和性能方面,在 Java 中每秒打印格式化的日期+时间的最有效方法是什么?



我能想到两个选项:

选项 1:

public class TimestampFormatter {
private static SimpleDateFormat dateFormatter = 
new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
private static Date date = new Date();
public static String get() {
date.setTime(System.currentTimeMillis());
return dateFormatter.format(date);
}
}

选项 2:

public class TimestampFormatter {
private static SimpleDateFormat dateFormatter = 
new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
public static String get() {
return dateFormatter.format(new Date());
}
}

然后使用此循环每秒打印格式化的日期+时间:

new Thread(() -> {
while (true) {
System.out.println(TimestampFormatter.get());
Sleep.millis(1000);
}
}).start();

我认为第一个选项是这里两个选项中最好的,但谁能想到更好的方法?

第二个选项可能比第一个选项更有效(或者第一个选项可能要好得多- 我怀疑你能测量任何差异(。无论我更喜欢较新的java.time.format.DateTimeFormatterjava.time.LocalDateTime,而不是长期弃用的SimpleDateFormatDate类。此外,安排重复Timer比使用while循环和重复睡眠调用更有效。像这样,

DateTimeFormatter dtf = DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm:ss");
TimerTask task = new TimerTask() {
public void run() {
System.out.println(dtf.format(LocalDateTime.now()));
}
};
Timer timer = new Timer("Timer");
timer.scheduleAtFixedRate(task, TimeUnit.SECONDS.toMillis(0), 
TimeUnit.SECONDS.toMillis(1));

最新更新