首页技术文章正文

java线程休眠的sleep方法详细介绍

更新时间:2021-11-10 来源:黑马程序员 浏览量:

IT培训班

线程的优先级是优先级高的程序会先执行,而优先级低的程序会后执行。如果希望人为地控制线程,使正在执行的线程暂停,将CPU让给别的线程,这时可以使用静态方法sleep(long millis),该方法可以让当前正在执行的线程暂停一段时间,进入休眠等待状态。当前线程调用sleep(long millis)方法后,在指定时间(单位毫秒)内该线程是不会执行的,这样其他的线程就可以得以执行了。

sleep(long millis)方法声明会抛出InterrupledException异常,因此在调用该方法时应该捕获异常,或者声明抛出该异常。下面通过一个案例来演示sleep(long millis)方法在程序中的使用。

public class Example02{
    public static void main(String[] args)throws Exception{
        //创建一个线程
        new Thread(new SleepThread()).start();
        for(int i=1;i<=10;i++){
            if(i == 5){
                Thread.sleep(2000);     //当前线程休眠2秒
            }
            System.out.println("主线程正在输出:"+i);
            Thread.sleep (500);     //当前线程休眠500毫秒
        }
    }
}

// 定义SleepThread类实现Runnable接口
class SleepThread implements Runnable{
    public void run(){
        for (int i=1;i<=10; i++){
            if(i ==3){
                try {
                    Thread.sleep(2000);//当前线程休眠2秒
                }catch(InterruptedException e){
                    e.printStackTrace();
                }
            }
            System.out.println("SleepThread线程正在输出:"+i);
            try{
                Thread.sleep(500); //当前线程休眠500毫秒
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }
}

上面代码运行结果如下图所示。

线程休眠sleep案例

代码中第15~31行代码定义了一个SleepThread类并实现了Runnable接口。在SleepThread类中重写了run()方法,run()方法中使用for循环打印线程输出语句;第26~30行代码使用sleep()方法设置线程休眠500毫秒;在第18~24行代码中使用if判断当变量i=3时,线程休眠2000毫秒;第4行中使用new关键词创建了一个SleepThread线程并启动;在第5~12行代码中使用for循环打印主线程的输出语句,并在第10行代码使用sleep()方法设置线程休眠500毫秒;在第6~8行代码中使用if判新出当变量i=5时,线程休眠2000毫秒。



猜你喜欢

线程安全单例有哪些?

如何保证多线程共享数据的安全?

Java中的4种线程池介绍

黑马程序员Java开发培训高手班课程

分享到:
在线咨询 我要报名