我想获取非阻塞方法的执行时间。通常可以用System.CurrentTimeMills()
来完成,我可以在这里使用该方法吗?我想知道一种获取非阻塞方法指标的方法。能行吗?
是的,您也可以在非阻塞调用上执行相同的操作。但是你把测量代码放在哪里可能会有所不同。一些方法是,
- 如果您使用的是类似
CompleteableFuture
,则可以在特定then
逻辑中添加测量检查。 - 如果你在回调,你可以包装回调并进行计算(更多信息在 https://www.ysofters.com/2016/03/18/measuring-execution-time-of-asynchronous-calls/(
没有"非阻塞方法"这样的东西。此术语有时用于不使用阻塞 IO 的方法,有时用于启动某些将在未来完成的工作的方法。
您可能是指后者 - 并且没有通用的方法来测量他们的时间,因为这实际上取决于该方法在做什么。在某些特定情况下(例如当方法返回Future
时(,这可能很简单。在某些特定情况下(该方法向外部系统发送消息( - 这可能是不可能的。