有没有一种方法可以确定该进程当前是否正在运行,以及定义该进程在被触发时已经运行了多长时间?
例如,我对名为getFirstName()
的方法进行了Web服务/ Web应用程序调用,该方法调用了数据库以检索名称。在此之前,我有一个AOP
建议方法拦截器,它将拦截方法getFirstName()
。现在在拦截器中,我会记下此请求的开始时间,然后继续执行实际的方法,如果请求已经运行了很长时间,现在我需要向用户触发邮件。因此,我该如何跟踪请求时间?
我不想使用任何线程来避免复杂性,有没有简单的方法可以做到这一点?
谢谢!
最佳答案
您可以自己组织它。在getFirstName()中,您
完成一些操作/动作序列。
要么
1)
getFirstName()必须以某种方式轮询其自身的状态(因为
您说您不希望其他进程/线程监视它)。但是这个
听起来很奇怪,而且更难做。还有,如果
getFirstName()调用一些长时间运行的操作,然后轮询将
不起作用(因为getFirstName()当前正忙于其他事情)。
要么
2)
另一个进程/线程可以检查getFirstName()进程的状态。
如果状态不是“完成”,并且已经过了相当长的时间,
它将发送一封电子邮件。 getFirstName()的责任
完成后将其状态设置为“完成”并设置为“已开始”
一旦开始。另外,每个getFirstName()调用可能都需要具有
一些唯一的ID。基本上就是这样。