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

用Java记录任务完成时间的智能解决方案是什么?,java,datetime,logging,time,log4j,Java,Datetime,Logging,Time,Log4j,在批处理Java应用程序(运行在控制台中的应用程序)中,我必须记录执行特定任务(某些操作作为查询执行)所需的时间 因此,我认为,要做到这一点,我可以在任务开始前检索日期和时间,并在任务完成后再次获取,然后从第二个值中减去第一个值,然后使用log4j将结果打印到日志文件中 但是,如果一个好的解决方案是正确的,我如何正确地获取该值(日期和时间) 有没有更聪明的方法 下面是一个以毫秒为单位的结果示例: public Connection getConnection(String inConnectio

在批处理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所建议的,你可以看看

如果您想测量一些任务,可以使用
System.nanoTime()
,存储值并执行计算就足够了

如果您需要更复杂的东西,我建议您看看(Java平台SE 8)或。两者都提供了持续时间和周期的概念来度量时间量。

看看这个线程: