zoukankan      html  css  js  c++  java
  • java线程学习之Sleep方法

    sleep方法是在线程中常用到的一个方法,它是一个静态方法。

    sleep(long millis)       在指定的毫秒数内让当前正在执行的线程休眠(暂停执行),此操作受到系统计时器和调度程序精度和准确性的影响。它可能会抛出中断异常

    InterruptedException。它在Thread中定义的为:
        /**
         * Causes the currently executing thread to sleep (temporarily cease
         * execution) for the specified number of milliseconds, subject to
         * the precision and accuracy of system timers and schedulers. The thread
         * does not lose ownership of any monitors.
         *
         * @param  millis
         *         the length of time to sleep in milliseconds
         *
         * @throws  IllegalArgumentException
         *          if the value of {@code millis} is negative
         *
         * @throws  InterruptedException
         *          if any thread has interrupted the current thread. The
         *          <i>interrupted status</i> of the current thread is
         *          cleared when this exception is thrown.
         */
        public static native void sleep(long millis) throws InterruptedException;

    sleep(long millis, int nanos)
              在指定的毫秒数加指定的纳秒数内让当前正在执行的线程休眠(暂停执行),此操作受到系统计时器和调度程序精度和准确性的影响。

    在jdk的Thread中定义如下

     1  /**
     2      * Causes the currently executing thread to sleep (temporarily cease
     3      * execution) for the specified number of milliseconds plus the specified
     4      * number of nanoseconds, subject to the precision and accuracy of system
     5      * timers and schedulers. The thread does not lose ownership of any
     6      * monitors.
     7      *
     8      * @param  millis
     9      *         the length of time to sleep in milliseconds
    10      *
    11      * @param  nanos
    12      *         {@code 0-999999} additional nanoseconds to sleep
    13      *
    14      * @throws  IllegalArgumentException
    15      *          if the value of {@code millis} is negative, or the value of
    16      *          {@code nanos} is not in the range {@code 0-999999}
    17      *
    18      * @throws  InterruptedException
    19      *          if any thread has interrupted the current thread. The
    20      *          <i>interrupted status</i> of the current thread is
    21      *          cleared when this exception is thrown.
    22      */
    23     public static void sleep(long millis, int nanos)
    24     throws InterruptedException {
    25         if (millis < 0) {
    26             throw new IllegalArgumentException("timeout value is negative");
    27         }
    28 
    29         if (nanos < 0 || nanos > 999999) {
    30             throw new IllegalArgumentException(
    31                                 "nanosecond timeout value out of range");
    32         }
    33 
    34         if (nanos >= 500000 || (nanos != 0 && millis == 0)) {
    35             millis++;
    36         }
    37 
    38         sleep(millis);
    39     }

    例子一:

     1 package com.song.test;
     2 
     3 import java.util.Date;
     4 
     5 public class TestThread01 extends Thread {
     6     public static void main(String[] args) {
     7         TestThread01 test = new TestThread01();
     8         test.start();
     9     }
    10 
    11     @Override
    12     public void run() {
    13         long time1 = System.currentTimeMillis();
    14         
    15         System.out.println("现在时间" + time1);
    16         try {
    17             sleep(2000);
    18             long time2= System.currentTimeMillis();
    19             System.out.println("休眠2秒后" + time2);
    20             System.out.println(time2-time1);
    21             sleep(1000,500000);
    22             long time3 = System.currentTimeMillis();
    23             System.out.println("休眠1000.5后:" + time3);
    24             System.out.println(time3-time2);//因为时间精度为毫秒,会造成误差
    25         } catch (InterruptedException e) {
    26             e.printStackTrace();
    27         } finally {
    28             
    29             
    30         }
    31         
    32     }
    33 }

    运行结果为:

    生于忧患,死于安乐
  • 相关阅读:
    spring-data-jpa初步认识
    java日期相关
    springboot整合activiMQ
    附录B. Spring Boot 配置文件application.properties
    ARM GNU常用汇编语言介绍
    GNU风格 ARM汇编语法5
    GNU风格 ARM汇编语法4
    GNU风格 ARM汇编语法3
    GNU风格 ARM汇编语法2
    GNU风格 ARM汇编语法1
  • 原文地址:https://www.cnblogs.com/songlove/p/10613964.html
Copyright © 2011-2022 走看看