2

我有一个功能:

Thread myThread = new Thread(new Runnable() {
    @Override
    public void run() {
        while (true) {
            try {
                Thread.sleep(500);
                myThread.sleep(500);
            } catch (InterruptedException e) {
               e.printStackTrace();
            }
        }
    }
});

打电话Thread.sleep(500);和打电话一样myThread.sleep(500);吗?

两个不同的调用之间有什么区别吗?

4

1 回答 1

9
public static void sleep(long millis)
              throws InterruptedException

使当前执行的线程休眠(暂时停止执行)指定的毫秒数,取决于系统计时器和调度程序的精度和准确性。该线程不会失去任何监视器的所有权。

sleep() 方法是静态的。它应该始终称为Thread.sleep(). 写作otherThread.sleep()不会导致睡眠otherThread;它会导致当前线程休眠。

于 2013-09-19T18:38:50.923 回答