首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >嵌套循环和超时

嵌套循环和超时
EN

Stack Overflow用户
提问于 2013-02-06 23:00:41
回答 3查看 263关注 0票数 0

我有一个生成决策树的大型嵌套循环(深达6层)。然而,这是一个相当时间关键的程序,我需要在时间到的时候中止生成。

我知道每个循环都可以通过计时器进行检查,但会降低效率。我在考虑使用监视器线程或类似的机制,我想知道是否有一种有效的方法来设置整个循环和中断的超时(可能使用"goto“子句)?

或者我应该只把嵌套的循环切成嵌套的线程?

EN

回答 3

Stack Overflow用户

发布于 2013-02-06 23:02:40

检查System.currentTimeMillis()时钟值的效率到底有多低?我强烈怀疑它可以忽略不计,这很可能是你最简单和最有效的选择。

票数 2
EN

Stack Overflow用户

发布于 2013-02-06 23:04:23

你可以在最内层的循环中测试计时器,如果太慢,就把它移到你的Level 5上,如果你的Level 4太慢……

票数 1
EN

Stack Overflow用户

发布于 2013-02-06 23:18:38

如果您想要停止整个生成过程,如果它没有在特定的时间限制内完成,您可以将所有循环放在一个线程中,并允许线程运行特定的时间,如果它没有完成,则终止。下面是我如何做到这一点:

代码语言:javascript
复制
Thread generationThread = new Thread(){

    public void run(){
        // All your loops

        // You can check for isInterrupted and simply return to terminate the process
        if(isInterrupted()){
          return;
        }
    }
}
generationThread.start();
generationThread.join(MAX_TIME); // how long in ms this process is allowed to run
// Terminate the thread if it did not finish
if(generationThread.isAlive()){
   generationThread.interrupt();
}

此代码仅用于说明,请根据需要进行更改。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14732077

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档