第五章 Java 线程休眠


关于 sleep 方法的一些要点是:

  • 它会导致当前正在执行的线程休眠特定的时间。
  • 其准确性取决于system timers and schedulers.
  • 它保留它已获取的监视器,因此如果从synchronized上下文中调用它,则没有其他线程可以进入该块或方法。
  • 如果我们调用interrupt()方法,它会唤醒休眠的线程。
synchronized(lockedObject) {  
      Thread.sleep(1000); // It does not release the lock on lockedObject.
      // So either after 1000 miliseconds, current thread will wake up, or after we call
      //t. interrupt() method.

示例:创建一个类FirstThread.java,如下所示。

package org.arpit.java2blog.thread;

public class FirstThread implements Runnable{

public void run()
{
  System.out.println("Thread is running");
}

}

创建名为的主类ThreadSleepExampleMain.java

package org.arpit.java2blog.thread;

public class ThreadSleepExampleMain {

public static void main(String args[])
{
  FirstThread ft= new FirstThread();

  Thread t=new Thread(ft);
  t.start();
  long startTime=System.currentTimeMillis();
  try {
                // putting thread on sleep
   Thread.sleep(1000);
  } catch (InterruptedException e) {
   e.printStackTrace();
  }
  long endTime=System.currentTimeMillis();
  long timeDifference=(endTime-startTime);
  System.out.println("Time difference between before and after sleep call: "+timeDifference);
}

}

当您运行上述程序时,您将获得以下输出。

Thread is running
Time difference between before and after sleep call: 1001

您可以看到有 1000 毫秒(1 秒)的延迟。如前所述,其准确性取决于系统计时器和调度程序。

线程休眠的工作原理

Thread.sleep()与线程调度程序一起使用以在特定时间段内暂停当前线程执行。一旦线程等待期结束,线程的状态将再次更改为可运行,并可用于 CPU 进一步执行。

这就是 Java 线程睡眠示例的全部内容


原文链接:https://codingdict.com/