当前位置: 首页 > 编程笔记 >

Java Thread之Sleep()使用方法总结

朱修德
2023-03-14
本文向大家介绍Java Thread之Sleep()使用方法总结,包括了Java Thread之Sleep()使用方法总结的使用技巧和注意事项,需要的朋友参考一下

一、API简介

Thread.sleep()是Thread类的一个静态方法,使当前线程休眠,进入阻塞状态(暂停执行),如果线程在睡眠状态被中断,将会抛出IterruptedException中断异常。。主要方法如下:

【a】sleep(long millis)  线程睡眠 millis 毫秒

【b】sleep(long millis, int nanos)  线程睡眠 millis 毫秒 + nanos 纳秒

Api文档:

二、使用方法

注意:在哪个线程里面调用sleep()方法就阻塞哪个线程。

public class SleepDemo {
  public static void main(String[] args) throws InterruptedException {
    Process process = new Process();
    Thread thread = new Thread(process);
    thread.setName("线程Process");
    thread.start();
 
    for (int i = 0; i < 10; i++) {
      System.out.println(Thread.currentThread().getName() + "-->" + i);
      //阻塞main线程,休眠一秒钟
      Thread.sleep(1000);
    }
  }
}
 
/**
 * 线程类
 */
class Process implements Runnable {
 
  @Override
  public void run() {
 
    for (int i = 0; i < 10; i++) {
      System.out.println(Thread.currentThread().getName() + "-->" + i);
 
      //休眠一秒钟
      try {
        Thread.sleep(1000);
      } catch (InterruptedException e) {
        e.printStackTrace();
      }
    }
 
  }
}

执行结果:main线程执行一次之后休眠一秒钟,让出cpu,此时Process线程执行一次然后又休眠一秒,依次执行。

三、示例

下面以一个倒计时的功能来进一步说明sleep()方法的使用:

/**
 * @Description: 线程休眠Sleep()方法
 * @Author: weishihuai
 * @Date: 2018/11/11 21:31
 * <p>
 * 1. 注意:sleep()方法使用的位置,如果使用在main线程执行代码中,则阻塞的是main线程。如果在其他线程执行的代码中,则阻塞的是执行这些代码的线程
 * 2. 案例: 倒计时功能
 */
public class TestSleepThread {
  public static void main(String[] args) throws InterruptedException {
    countDown(10000);
  }
 
  /**
   * 倒计时方法
   *
   * @param mills 倒计时开始的时间距离当前时间多少毫秒
   */
  public static void countDown(long mills) {
    Date endDate = new Date(System.currentTimeMillis() + mills);
    long endTime = endDate.getTime();
 
    while (true) {
      System.out.println(new SimpleDateFormat("hh:mm:ss").format(endDate));
      //下一秒时间
      endDate = new Date(endDate.getTime() - 1000);
      //休眠一秒钟
      try {
        Thread.sleep(1000);
      } catch (InterruptedException e) {
        e.printStackTrace();
      }
      if (endTime - endDate.getTime() > mills) {
        break;
      }
    }
  }
 
}

执行结果:

四、注意问题

【a】sleep()方法是Thread类的静态方法,如果调用线程对象.sleep()方法并不是该线程就休眠,反正在哪一个线程里面执行了sleep()方法哪一个线程就休眠。

【b】线程睡眠到期自动苏醒,并返回到可运行状态(就绪),不是运行状态。

到此这篇关于Java Thread之Sleep()使用方法总结的文章就介绍到这了,更多相关Java Thread Sleep()内容请搜索小牛知识库以前的文章或继续浏览下面的相关文章希望大家以后多多支持小牛知识库!

 类似资料:
  • 本文向大家介绍Java并发– sleep()方法,包括了Java并发– sleep()方法的使用技巧和注意事项,需要的朋友参考一下 睡眠功能 该睡眠函数用于确保当前正在执行的线程进入睡眠特定的毫秒数,该毫秒数作为参数传递给该函数。该线程将在该毫秒数内停止执行。 让我们看一个例子 示例 输出结果 名为Demo的类实现Runnable类。定义了一个新线程。接下来,定义一个“运行”函数,该函数遍历一组元

  • 本文向大家介绍javascript 使用sleep函数的常见方法详解,包括了javascript 使用sleep函数的常见方法详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了javascript 使用sleep函数的常见方法。分享给大家供大家参考,具体如下: 一.什么是sleep函数? 花一点时间来聊一下sleep函数,首先什么是sleep函数? sleep是一种函数,他的作用是使程序

  • 本文向大家介绍python sleep和wait对比总结,包括了python sleep和wait对比总结的使用技巧和注意事项,需要的朋友参考一下 在多线程的使用时,为了线程的顺利进行,我们会使用函数来对某个线程进行暂停运行。在多线程中有两个函数可以实现sleep和wait,不过它们在使用时也有不同之处。为了帮助大家更好理清它们之间的相同与区别点,本篇就python中sleep和wait两个函数展

  • 问题内容: 由于当前正在执行的线程在遇到调用时会立即将其移入休眠状态。而线程进入 可运行 状态/ 就绪 状态。 问题答案: 使线程在给定的时间内肯定停止执行;如果没有其他线程或进程需要运行,则CPU将处于空闲状态(并可能进入节能模式)。 基本上意味着线程没有做任何特别重要的事情,如果需要运行任何其他线程或进程,则应该这样做。否则,当前线程将继续运行。

  • 本文向大家介绍基于Require.js使用方法(总结),包括了基于Require.js使用方法(总结)的使用技巧和注意事项,需要的朋友参考一下 一、为什么要使用require.js 首先一个页面如果在加载多个js文件的时候,浏览器会停止网页渲染,加载文件越多,网页失去响应的时间就会越长;其次,由于js文件之间存在依赖关系,因此必须严格保证加载顺序,当依赖关系很复杂的时候,代码的编写和维护都会变得困

  • 本文向大家介绍android使用mysql的方法总结,包括了android使用mysql的方法总结的使用技巧和注意事项,需要的朋友参考一下 android可以使用mysql数据库,android连接数据库的方式有两种。 第一种是通过连接服务器,再由服务器读取数据库来实现数据的增删改查,这也是我们常用的方式。 第二种方式是android直接连接数据库,这种方式非常耗手机内存,而且容易被反编译造成安全