第三百一十五节 Java线程教程 - Java线程休眠
Java线程教程 - Java线程休眠
Thread类包含一个静态sleep()方法,它使线程在指定的持续时间内休眠。
Thread.sleep()方法接受超时作为参数。
我们可以指定超时的毫秒数,或毫秒和纳秒。执行此方法的线程将休眠指定的时间。
操作系统调度程序不调度睡眠线程以接收CPU时间。
如果线程在进入休眠之前拥有锁的所有权,则它在休眠期间继续保持这些锁。
sleep()方法抛出java.lang.InterruptedException,你的代码必须处理它。
例子
下面的代码演示了使用Thread.sleep()方法。
public class Main {public static void main(String[] args) {try {System.out.println("sleep for 5 seconds.");Thread.sleep(5000);// The "main" thread will sleepSystem.out.println("woke up.");} catch (InterruptedException e) {System.out.println("interrupted.");}System.out.println("done.");} }
上面的代码生成以下结果。
例2
java.util.concurrent包中的TimeUnit枚举表示各种单位(如毫秒,秒,分钟,小时,天等)的时间测量值。
它有sleep()方法,其工作方式与Thread.sleep()相同。
我们可以使用TimeUnit的sleep()方法来避免持续时间转换:
TimeUnit.SECONDS.sleep(5); // Same as Thread.sleep(5000);
完整的源代码
import java.util.concurrent.TimeUnit;public class Main {public static void main(String[] args) {try {System.out.println("sleep for 5 seconds.");TimeUnit.SECONDS.sleep(5); // Same as Thread.sleep(5000);// The "main" thread will sleepSystem.out.println("woke up.");} catch (InterruptedException e) {System.out.println("interrupted.");}System.out.println("done.");} }
上面的代码生成以下结果。