转自:
下文笔者讲述Thread.Sleep()方法的功能简介说明,如下所示:
Thread.Sleep()方法的功能:
暂停当前线程
当线程停止后,会通知线程调度器在当前时间周期内将其状态设置为wait
当wait时间结束后,线程会变为Runnable状态,继续等待CPU再次调度
Thread.Sleep()方法的语法
暂停当前线程的执行,暂停时间由方法参数指定 单位为毫秒 当参数为负数时,程序将会抛出IllegalArgumentException java.lang.Thread sleep(long millis) 暂停当前线程的执行,暂停时间为millis毫秒数加上nanos纳秒数 纳秒允许的取值范围为0~999999 java.lang.Thread sleep(long millis, int nanos)
例
public class TestThreadSleep implements Runnable{ public static void main(String[] args) { TestThreadSleep runnable = new TestThreadSleep(); Thread thread = new Thread(runnable); thread.start(); } @Override public void run() { System.out.println("sleep"); try { Date currentTime = new Date(); long startTime = currentTime.getTime(); Thread.sleep(4000); currentTime = new Date(); long endTime = currentTime.getTime(); System.out.println("休眠时间为:"+(endTime-startTime)+"ms"); } catch (InterruptedException e) { e.printStackTrace(); } } }
sleep()注意事项: 1.只用于暂停当前线程 2.线程wakeup之后,实际的运行时间取决于操作系统的调度时间 3.sleep不会释放monitor及lock锁资源 4.当其他任意线程中断当前sleep的线程,会抛出InterruptedException