记录一项任务在 Java 内完成的时间的智能解决方案是什么?

What is a smart solution for the logging of how much time a task is completed in Java?

进入批处理 Java 应用程序(运行 进入控制台的应用程序)我必须记录执行特定任务所需的时间(某些操作作为查询执行)。

所以我想这样做我可以在我的任务开始之前检索日期和时间并在任务完成后再次获取它,然后从第二个值中减去第一个值并使用 log4j 打印结果存入日志文件。

但是,如果它是一个好的解决方案是正确的,我怎样才能正确地取这个值(日期和时间)?

有更聪明的方法吗?

这是一个以毫秒为单位的结果示例:

public Connection getConnection(String inConnectionType) throws TSPException {
    long start = System.nanoTime();

    Connection conn = null;
    try {
        DataSource dataSource = getDataSource(inConnectionType);
        conn = dataSource.getConnection();
    } catch (SQLException e) {
        log.error(e);
        throw new TSPException(e);
    }

    long end = System.nanoTime();
    double duration = (end - start) / 1000000.0;

    log.debug("Duration getting external db connection=" + duration);

    return conn;
}

按照@John的建议,你可以看看How do I measure time elapsed in Java?

如果您想测量几个任务,也许使用 System.nanoTime(),存储值并执行计算就足够了。

如果您需要更复杂的东西,我建议您看一下 java.time (Java Platform SE 8) or Joda-Time。两者都提供了 Duration 和 Period 的概念来衡量时间量。