我遇到了一些Java代码,其中包含以下方法:
static boolean waitForSeconds(long seconds) { try { Thread.sleep(seconds * 1000); } catch (InterruptedException ex) { return false; } return true; }
这可能是什么目的?返回值用于确定计算是否应该继续。我试着睡了1秒似乎很奇怪,唯一的目的是检查线程是否在那一秒间被中断。
调用此方法的代码是否尝试完成与thread.isInterrupted()相同的操作?无论它想做什么,有更好的方法吗?
对waitForSeconds的调用出现在另一个方法的顶部,而不是在循环内部,所以如果这个代码除了检查中断之外还打算等待一段时间,那么它似乎会检查在错误的地方。把睡眠放在靠近循环的地方不是更好吗?它更清楚它在做什么?
关于最后一个问题,请在此回复:
Is it clearer to sleep near a function call in a loop or in the function call itself?
答案 0 :(得分:4)
目的是暂停。
检查调用外部方法的代码,试着看看他们想要暂停的原因 他们可能想要节省CPU或网络。
答案 1 :(得分:3)
该方法的目的是使线程执行停止指定的秒数。 catch子句允许该方法与调用者通信线程被中断,而不是时间段到期。
答案 2 :(得分:1)
这个想法可能是在计算中引入暂停,但是如果暂停被中断,那么这意味着计算不应该继续。如果不看周围(调用)代码,为什么需要暂停是不可能的。
答案 3 :(得分:0)
我猜他们想暂停至少x秒;如果由于某种原因线程无法长时间睡眠,他们将使用返回值再次调用该方法