等待Java中的时间框架:Thread.sleep(int)如何工作?

时间:2015-03-08 05:13:17

标签: java multithreading sleep

传统上,我将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工作,而且除了通过时间之外没有其他意义。

2 个答案:

答案 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()函数