Thread类的静态睡眠方法如何工作而无法访问'这个'参考?

时间:2015-04-11 08:16:50

标签: java multithreading methods this sleep

我对静态方法有些困惑。静态方法无法访问this引用。 (在Java中,this是引用当前对象的引用。)

当调用Thread.sleep(millis)时, Thread类的静态睡眠方法如何选择要睡眠的线程? Thread.sleep(long millis)是静态方法并且无权访问this

public class CurrentThreadDemo {
    public static void main(String... args) {

        Thread t = Thread.currentThread();

        System.out.println("Current thread: " + t);

        //change the name of the thread
        t.setName("My thread");
        System.out.println("After name change: " + t);

        try {
            for (int n = 5; n > 0; n--) {
                System.out.println(n);
                Thread.sleep(1000);
            }
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

3 个答案:

答案 0 :(得分:3)

  

当调用Thread.sleep(millis)时,Thread类的静态sleep方法如何选择要休眠的线程。

Thread.sleep的规范是它挂起当前线程,即调用sleep方法的线程。

答案 1 :(得分:0)

  

Thread.sleep()方法基本上与线程交互   调度程序将当前线程置于所需的等待状态   间隔“。

来源:http://www.javamex.com/tutorials/threads/sleep.shtml

答案 2 :(得分:0)

  

当调用Thread.sleep(millis)时,Thread类的静态sleep方法如何选择要睡眠的线程?

它选择当前线程。正在调用该方法的那个。由Thread.currentThread().

返回的那个
  

Thread.sleep(long millis)是一个静态方法,无法访问此引用变量。

我同意。所以?它不需要它。