[英]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.