顾名思义,线程休眠就是让线程进入睡眠状态,也是转为阻塞状态,这个时候的线程让出了CPU。线程休眠是sleep()方法,它怎么用呢?来看看源码:
public static native void sleep(long millis) throws InterruptedException;
public static void sleep(long millis, int nanos) throws InterruptedException{}
sleep方法有两个构造函数,都是static修饰的,这意味着使用的时候直接Thread.sleep()就可以了。第一个构造函数的参数是毫秒,意味着线程要休眠多少毫秒,第二个构造函数的参数是毫秒和纳秒,这意味着休眠时长可以更加精准。sleep方法抛出InterruptedException中断异常,这个异常需要我们手动检查。下面看看使用案例:
class MyThread6 implements Runnable{
@Override
public void run() {
for(int i = 0; i < 20; i++) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + "运行, i = " + i);
}
}
}
public class Sleep {
public static void main(String[] args) {
MyThread6 threadBody = new MyThread6();
new Thread(threadBody, "运行线程").start();
}
}
实现的结果是一秒打印一行语句。
使用时要注意:
1、由于sleep()方法是static,不由对象名调用,所以哪个线程调用sleep()方法,哪个线程就休眠。
2、线程休眠结束后,会转为就绪状态。