Java 定时器逻辑

Java Timer logic

这是我在需要测量每个查询的查询执行时间的地方找到的一些代码? 为了测量使用了 metricRegistry.timer 但它是如何工作的,它测量的时间是什么,因为我找不到任何定义停止时间的代码行,只是这一行? 谁能帮我解决在互联网上找不到的问题?

 try (PreparedStatement ps = connection.prepareStatement(QUERY.SQL())) {
          try (
               Timer.Context ignored = metricRegistry.timer(name("query", QUERY.NAME())).time();
               ResultSet rs = ps.executeQuery()) {
            if (rs.next()) {
              successCounter.inc();
            } else {
              failedCounter.inc();
            }
          }
        } 

A Timer.Context 是一个 Closeable,这意味着当您像此处那样在 try 块中使用它时,它的 close() 方法会在try 块已退出。此外,根据 Timer.Context (https://metrics.dropwizard.io/3.1.0/apidocs/com/codahale/metrics/Timer.Context.html) 的 Javadocs,调用 close() 就像调用 stop()。所以基本上,当 try 块退出时,stop() 在计时器上被调用。