欢迎访问宙启技术站
智能推送

利用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次,最后整个线程执行结束。