繁体   English   中英

为了看看线程是否被中断,睡眠的目的是什么?

[英]What might be the purpose of sleeping for just to see if the thread gets interrupted?

我遇到了一些Java代码,它有一个包含以下内容的方法:

static boolean waitForSeconds(long seconds) {
    try {
        Thread.sleep(seconds * 1000);
    } catch (InterruptedException ex) {
        return false;
    }
    return true;
}

这可能是什么目的? 返回值用于确定计算是否应该继续。 我试着睡1秒钟似乎很奇怪,唯一的目的是检查线程是否在那一秒间被中断。

调用此方法的代码是否尝试完成与thread.isInterrupted()相同的操作? 无论它想做什么,有没有更好的方法?

对waitForSeconds的调用出现在另一个方法的顶部,而不是在循环内部,所以如果这个代码除了检查一个中断之外还打算等待一段时间,看起来它会检查错误地点。 将睡眠放在循环附近不是更好,它在哪里更清楚它在做什么?

对于最后一个问题,请在此回复:

在循环中的函数调用或函数调用本身附近睡觉是否更清楚?

目的是暂停。

检查调用外部方法的代码,以尝试查看他们想要暂停的原因。
他们可能想要节省CPU或网络。

该方法的目的是使线程执行停止指定的秒数。 catch子句允许该方法与调用者通信线程被中断,而不是时间段到期。

这个想法可能是在计算中引入暂停,但是如果暂停被中断,那么这意味着计算不应该继续。 如果不看周围(调用)代码,为什么需要暂停是不可能的。

我想他们想暂停至少x秒; 如果由于某种原因线程无法长时间睡眠,他们会使用返回值再次调用该方法

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM