我有一个方法,可以写入数据库。要求是确保此方法不会在经过特定时间后执行。如果它在那之前返回,那么什么也不应该做。
我能想到的一个基本方法就是这样做。
public class LimitedRuntime {
public static void writeToDb(){
// writes to the database
}
public static void main(String[] args) {
long totalExecutionTime = 8000L;
long startTime = System.currentTimeMillis();
while(System.currentTimeMillis() - startTime < totalExecutionTime )
{
writeToDb();
}
}
}
这种方法的一个问题是,即使方法在最大总执行时间之前返回,程序也会停止以等待时间流逝。
我怎样才能做得更好(或者更正确)?如果我们使用 Thread
,我们怎样才能知道 Thread
执行那个方法?
2条答案
按热度按时间f3temu5u1#
您可以将您的工作发送给执行人:
sxpgvts32#
还有一个aspectj解决方案,它使用jcabi方面库:
有一篇文章对此作了进一步的解释:限制java方法的执行时间