有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

关于java线程的睡眠状态

线程类中的睡眠函数是静态的。i read sleep函数可以使一个线程在其他线程运行时睡眠一段特定时间

由于睡眠功能是静态的。。。当调用它时,它将适用于所有线程。如何使用它保持特定线程处于睡眠状态


共 (5) 个答案

  1. # 1 楼答案

    调用时,它将使当前正在执行的线程休眠

  2. # 2 楼答案

    Thread.sleep();
    

    将使执行此代码的当前线程处于睡眠模式

    Causes the currently executing thread to sleep (temporarily cease execution) for the specified number of milliseconds.

  3. # 3 楼答案

    根据java文档:

     public static void sleep(long millis,
                                 int nanos)
                          throws InterruptedException
    

    使当前执行的线程睡眠(停止执行)指定的毫秒数加上指定的纳秒数。线程不会失去任何监视器的所有权

    因此,当您调用sleep()时,您将休眠当前线程

  4. # 4 楼答案

    sleep方法不适用于所有线程,当调用它时,它会获取其中的当前线程(可能使用另一个静态方法thread.currentThread())。由于堆/堆栈可见性的原则,方法调用只适用于当前线程,并且不修改任何静态字段(它是自包含的)

  5. # 5 楼答案

    由于该方法取决于调用线程的jvm的状态,而不是由对象表示的线程,因此它必须是静态的,其他任何东西都会产生误导

    在线程实例上实现它不会很好,因为如果持有对jvm资源的锁(link),停止其他线程可能会导致整个jvm停止