线程的休眠

朱雀 2020-05-12 15:45 913阅读 0赞

线程的休眠

线程对象一旦调用其start方法之后,就会运行,运行的就是run方法中的代码,等到run方法中的代码运行结束,线程就执行完成。

如果我们想在线程运行的时候,让其暂停一会,可以调用线程sleep方法,sleep方法的作用是让线程进行休眠,意思是线程暂停执行。在执行的休眠时间内,该线程是不会请求CPU进行执行,因此其他线程可以获得更多的运行机会。

暂停是有实际的作用的,例如我们想检查远程服务器的运行状态,为了可以一直进行检查,我们可能会将检查服务器运行状况的代码放在一个死循环中。但是频繁的发送请求可能又会给服务器造成压力,因此我们可能是希望每隔几秒中去检查一次,这实际上就是一个简易定时器的作用(在Java中,定时器有一个专门的类叫做Timer)。

以下代码用于演示线程的休眠:

  1. public class SleepDemo {
  2. public static void main(String[] args) {
  3. new Thread(){
  4. @Override
  5. public void run() {
  6. //我们希望不断的去检查服务器的状态,所以讲将检查的代码放入一个死循环中
  7. while (true){
  8. //用打印一句话表示检查服务器状态
  9. System.out.println("检查服务器状态....当前时间:"+new Date().toLocaleString());
  10. try {
  11. //休眠3秒,以免检查台频繁
  12. this.sleep(3000);
  13. } catch (InterruptedException e) {
  14. e.printStackTrace();
  15. }
  16. }
  17. }
  18. }.start();
  19. }
  20. }

以上程序的运行结果:

  1. 检查服务器状态....当前时间:2016-5-31 21:36:28
  2. 检查服务器状态....当前时间:2016-5-31 21:36:31
  3. 检查服务器状态....当前时间:2016-5-31 21:36:34
  4. 检查服务器状态....当前时间:2016-5-31 21:36:37
  5. ....

可以看到的确是每隔3秒执行一次!

注意sleep方法抛出了一个InterruptedException异常。这个异常是在线程还在休眠的时候,如果其他的线程中断(interrupt)了这个线程的执行抛出的。中断的作用是,如果一个线程在运行期,我们不想其继续运行下去了,就可以给其发送一个信号,让其停止运行。注意中断和休眠的区别,中断是让线程停止运行,而休眠只是暂停运行,等到休眠时间过后,可以继续执行。在下一节我们会详细的讲解中断相关的知识。

发表评论

表情:
评论列表 (有 0 条评论,913人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Java线休眠示例编程

    在Java编程中,线程休眠是一种常用的技术,用于暂停当前线程的执行一段时间。总结来说,线程休眠是Java编程中常用的技术之一,能够实现线程的暂停执行一段时间。通过本文提供...

    相关 Thread--线休眠sleep

    sleep()的作用是让当前线程进入休眠,当前线程会由运行状态进入到阻塞状态,sleep()可以指定休眠时间,休眠时间会大于等于该休眠时间,在线程被重新唤醒时,线程的状态由阻塞

    相关 线休眠

    线程对象一旦调用其`start`方法之后,就会运行,运行的就是`run`方法中的代码,等到`run`方法中的代码运行结束,线程就执行完成。