传统上,我将Thread.sleep(int)
包围e.printStackTrace()
try / catch块的private static void pause(int millis) {
long end = System.currentTimeMillis() + millis;
while(System.currentTimeMillis() <= end) {
// Do nothing
}
}
延迟了我的程序。我想废除异常处理。我写了这个函数:
Thread.sleep(int)
但是使用它会使用15%的CPU(一种可听见的事情)。 {{1}}如何在没有不可接受的CPU使用情况下暂停?我没有受过教育的猜测是,它执行一些耗时的活动,不需要太多的CPU工作,而且除了通过时间之外没有其他意义。
答案 0 :(得分:2)
Thread.sleep()
没有做任何活动;线程被暂停。但是,如果您只是试图绕过异常处理,为什么不将它添加到您的帮助方法中?
private static void pause(int millis) {
try {
Thread.sleep(millis);
} catch (InterruptedException e) {
// Do nothing
}
}
如果你想确保你的方法永远不会太快完成,你可以把try-catch放在你的while循环中。
顺便说一句,从技术上讲,循环不需要正文,所以你可以用方法中的分号替换花括号。
答案 1 :(得分:0)
Thread.sleep直接通过JNI调用系统函数,如Windows中的Sleep()函数