什么是在 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建议的那样,你可以看看如何在 Java 中测量经过的时间?

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

如果你需要更复杂的东西,我建议你看看java.time(Java Platform SE 8)或Joda-Time。两者都提供了持续时间和周期的概念来测量时间量。

相关内容

最新更新