利用Java的Thread类的sleep函数实现线程休眠的方法
发布时间:2023-06-12 08:56:29
Java中的Thread类提供了sleep()方法,该方法可以使当前正在执行的线程进入睡眠状态指定的时间,然后该线程将被唤醒并恢复执行。
线程休眠的方法如下:
1. 使用Thread类的sleep()方法
该方法有两种重载形式:
- public static void sleep(long millis) throws InterruptedException
该方法使当前线程睡眠指定的时间(毫秒),然后该线程被重新唤醒并继续执行。
- public static void sleep(long millis, int nanos) throws InterruptedException
该方法使当前线程睡眠指定的时间(毫秒)加上指定的纳秒数,然后该线程被重新唤醒并继续执行。
2. 使用Object类的wait()方法
可以使用Object类的wait()方法使当前线程休眠,直到其他线程调用该对象的notify()或notifyAll()方法将其唤醒。
Thread.sleep()与Object.wait()之间有以下几个不同点:
- Thread.sleep()并不会释放锁,而Object.wait()会释放锁。
- Thread.sleep()可以在任何地方使用,而Object.wait()必须在synchronized块中使用。
下面是一个使用Thread.sleep()方法的示例:
public class SleepExample {
public static void main(String[] args) {
System.out.println("开始执行线程");
for (int i = 1; i <= 5; i++) {
try {
System.out.println("线程休眠" + i + "秒");
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("线程执行结束");
}
}
输出结果:
开始执行线程 线程休眠1秒 线程休眠2秒 线程休眠3秒 线程休眠4秒 线程休眠5秒 线程执行结束
在上面的示例中,程序使用Thread.sleep()方法,使当前线程休眠指定的时间(毫秒)。程序执行过程中,第1个线程执行到sleep()方法时,该线程会休眠1秒钟,然后被唤醒并继续执行。这个过程会反复5次,最后整个线程执行结束。
