更新时间:2021-11-10 来源:黑马程序员 浏览量:
线程的优先级是优先级高的程序会先执行,而优先级低的程序会后执行。如果希望人为地控制线程,使正在执行的线程暂停,将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(); } } } }
上面代码运行结果如下图所示。
代码中第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毫秒。
猜你喜欢