我有一个方法,可以写入数据库。要求是确保经过一定时间后该方法不执行。如果在此之前返回,则什么也不做。
我能想到的一种基本方法就是这样做。
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
执行该方法的对象?
您可以通过将工作发送给执行者来做到这一点:
public static void main(String[] args) {
ExecutorService executor = Executors.newFixedThreadPool(4);
Future<?> future = executor.submit(new Runnable() {
@Override
public void run() {
writeToDb(); // <-- your job
}
});
executor.shutdown(); // <-- reject all further submissions
try {
future.get(8, TimeUnit.SECONDS); // <-- wait 8 seconds to finish
} catch (InterruptedException e) { // <-- possible error cases
System.out.println("job was interrupted");
} catch (ExecutionException e) {
System.out.println("caught exception: " + e.getCause());
} catch (TimeoutException e) {
future.cancel(true); // <-- interrupt the job
System.out.println("timeout");
}
// wait all unfinished tasks for 2 sec
if(!executor.awaitTermination(2, TimeUnit.SECONDS)){
// force them to quit by interrupting
executor.shutdownNow();
}
}
问题内容: 我有一个XML文档,其中包含大约48,000个子级(〜50MB)。我运行INSERT MYSQL查询,为这些子项中的每个子项都创建新条目。问题是,由于其大小,它需要很多时间。执行后,我收到这个 如何将最大执行时间设置为无限制? 谢谢 问题答案: 您可以通过在您的php代码中设置set_time_limit来实现(无限制地设置为0) 或者直接在您的php.ini中修改max_execut
问题内容: 当我尝试在phpMyadmin中执行(某些)查询时,出现此错误 致命错误:第140行的C:\ xampp \ phpmyadmin \ libraries \ dbi \ mysql.dbi.lib.php中超过60秒的最大执行时间 因为我有一个很大的表(超过900万条记录) 我已经编辑了文件C:\ xampp \ php \ php.ini 并将“最大执行时间”的值从60更改为100
本文向大家介绍Spring Boot中配置定时任务、线程池与多线程池执行的方法,包括了Spring Boot中配置定时任务、线程池与多线程池执行的方法的使用技巧和注意事项,需要的朋友参考一下 配置基础的定时任务 最基本的配置方法,而且这样配置定时任务是单线程串行执行的,也就是说每次只能有一个定时任务可以执行,可以试着声明两个方法,在方法内写一个死循环,会发现一直卡在一个任务上不动,另一个也没有执行
在 php-fpm 中有 max_execution_time 这个选项,用来限定请求最大执行时间。 imi 提供了一个中间件,用以支持设置最大请求执行时间,如果超时可以做提前返回结果的处理。 使用方法 启用 在服务器配置 beans 节中配置中间件ExecuteTimeoutMiddleware: [ 'HttpDispatcher' => [ 'middle
问题内容: 我添加了增加执行时间的功能,但最多只能执行2-3分钟。 我想从一个需要很长时间的站点上搜索链接。 任何帮助将不胜感激。 非常感谢。 问题答案: PHP文件(例如,my_lengthy_script.php) .htaccess文件 更多配置选项 如果是wordpress,请在config.php文件中进行设置, 如果是drupal,则为sites / default / setting
什么是最好的方法来衡量Android代码段的执行时间? 我有一段前后的代码,我想用时间戳来确定它的执行时间(例如,中的一段,以及活动方法中的另一段)。 我已经试过了。toMillies(false),但它只会向我返回秒数(最后是常量)。我还尝试了两个java函数:和。第一个返回纪元时间的毫秒,第二个不返回。 测量执行时间并获得良好精度的最佳方法是什么?