如何在线程休眠期间每尝试一定次数后记录错误?

Posted

技术标签:

【中文标题】如何在线程休眠期间每尝试一定次数后记录错误?【英文标题】:How to log an error after every certain number of tries during sleeping the thread? 【发布时间】:2014-03-25 11:49:54 【问题描述】:

我有一个 while 循环,它检查 verifySystem 方法以查看它是否返回 true。如果它没有返回 true 则它将休眠 5 分钟,然后在 5 分钟后再次调用 verifySystem 方法查看它是否返回 true。

    while (!verifySystem(name, value)) 
        Thread.sleep(5 * 60 * 1000); // sleeping for 5 minutes
    

所以假设无论出于何种原因,该方法没有返回 true,那么我的程序将永远继续运行..

所以我想检查一下它是否至少休眠了 10 次,然后我现在会使用 System.out.println() 记录一个错误。集成代码后,我将使用记录器..

我将如何添加这个 10 次检查的逻辑,如果它已经尝试了 10 次以上,那么记录一个错误并重置计数器。所以它会再次开始每 5 分钟调用一次 verifySystem 方法来查看是否方法是否返回真..

简而言之,它会在每 10 次尝试后记录一个错误,但之后会重置计数器..

【问题讨论】:

【参考方案1】:
int tryCounter = 0;
while (!verifySystem(name, value)) 
    Thread.sleep(5 * 60 * 1000); // sleeping for 5 minutes
    tryCounter++
    if (tryCounter >= 10) 
        tryCounter = 0;
        // log your message here
    

【讨论】:

感谢 jw23 的帮助.. 现在有意义.. 感谢您的帮助.. 我还有一个问题 here。看看你能不能帮帮我..【参考方案2】:

为什么不这样:

int errorCount = 0;

while (!verifySystem(name, value)) 
    if(++errorCount > 10) 
        // Log your message
        System.out.println("ERROR");
        // Reset counter
        errorCount = 0;
    

    Thread.sleep(5 * 60 * 1000); // sleeping for 5 minutes


errorCount = 0;

【讨论】:

以上是关于如何在线程休眠期间每尝试一定次数后记录错误?的主要内容,如果未能解决你的问题,请参考以下文章

在 UI 测试期间未能阻止系统休眠。错误代码:-536870211

选择组合框后记录显示不会更新

java线程如何一分钟执行一次

如何记录从 BAT 文件运行的 snowsql 命令的错误/成功

尝试一定次数后锁定的 Python 密码系统

如何在线程休眠时中止线程