【发布时间】:2013-12-10 16:35:36
【问题描述】:
我有一个写入数据库的方法。要求是确保此方法在经过一定时间后不执行。如果它在那之前返回,那么什么都不应该做。
我能想到的一种基本方法是做这样的事情。
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执行了那个方法?
【问题讨论】:
-
什么是最不经意的解决方案,
Δt = t2 - t2o.O
标签: java multithreading concurrency