zoukankan      html  css  js  c++  java
  • [译]Java Thread Sleep示例

    Java Thread Sleep示例

    java.lang.Thread sleep(long millis)方法被用来暂停当前线程的执行,暂停时间由方法参数指定,单位为毫秒。注意参数不能为负数,否则程序将会抛出IllegalArgumentException。

    还有另外一个sleep(long millis, int nanos)方法,功能与上面方法相同,只不过暂停时间为millis毫秒数加上nanos纳秒数。纳秒允许的取值范围为0~999999.

    下面的程序通过调用Thread.sleep()方法,使main线程的执行过程暂停了2秒钟。

    package com.journaldev.threads;
    
    public class ThreadSleep {
    
        public static void main(String[] args) throws InterruptedException {
            long start = System.currentTimeMillis();
            Thread.sleep(2000);
            System.out.println("Sleep time in ms = "+(System.currentTimeMillis()-start));
    
        } 
    }  

    运行上面的程序,会看到实际输出的sleep时间会比2000毫秒稍长一些,这个主要由线程的sleep工作机制以及操作系统具体的线程调度实现引起的。

    Thread Sleep 要点

    • 它只用于暂停当前线程的执行。
    • 线程被唤醒(wake up)并开始执行的实际时间取决于操作系统的CPU时间片长度及调度策略。对于相对空闲的系统来说,sleep的实际时间与指定的sleep时间相近,但对于操作繁忙的系统,这个时间将会显得略长一些。
    • 线程在sleep过程中不会释放它已经获得的任意的monitor和lock等资源。
    • 其他的任意线程都能中断当前sleep的线程,并会抛出InterruptedException。

    Thread sleep工作机制

    Thread.sleep()会通知线程调度器把当前线程在指定的时间周期内置为wait状态。当wait时间结束,线程状态重新变为Runnable并等待CPU的再次调度执行。所以线程sleep的实际时间取决于线程调度器,而这是由操作系统来完成的。

    原文链接:http://www.journaldev.com/1020/java-thread-sleep-example

  • 相关阅读:
    学习进度四
    每日进度二
    每日进度一
    学习进度三
    学习进度二
    安全性战术
    Linux 常用命令
    python测试框架之pytest
    Python 列表生成式和字典生成式
    使用Python在Windows 10上显示通知信息
  • 原文地址:https://www.cnblogs.com/enjiex/p/3661595.html
Copyright © 2011-2022 走看看