转自:
Java Thread.Sleep()具有什么功能呢?
下文笔者讲述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