4

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

静态布尔waitForSeconds(长秒){
    尝试 {
        Thread.sleep(秒 * 1000);
    } 捕捉(InterruptedException ex){
        返回假;
    }
    返回真;
}

这样做的目的可能是什么?返回值用于确定计算是否应该继续。仅出于检查线程在那一秒内是否被中断的唯一目的而尝试休眠 1 秒对我来说似乎很奇怪。

调用此方法的代码是否试图完成与 thread.isInterrupted() 相同的事情?不管它想做什么,有没有更好的方法?

对 waitForSeconds 的调用出现在另一个方法的顶部,而不是在循环内部,因此如果此代码除了检查中断之外确实打算出于某种目的等待一秒钟,那么它似乎会检查错误地方。将 sleep 放在循环附近不是更好吗,这样更清楚它在做什么?

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

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

4

4 回答 4

4

目的是暂停。

检查调用外部方法的代码以尝试了解它们为什么要暂停。
他们可能想要节省 CPU 或网络。

于 2011-12-28T20:11:33.947 回答
3

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

于 2011-12-28T20:13:08.390 回答
1

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

于 2011-12-28T20:13:59.500 回答
0

我猜他们想暂停至少 x 秒;如果由于某种原因线程无法休眠那么久,他们将使用返回值再次调用该方法

于 2011-12-28T20:47:04.937 回答