多线程方法---sleep()---线程休眠

目录

Thread.sleep()---可以让当前线程休眠

.sleep(long millis)

.sleep(long millis, int nanos)


Thread.sleep()---可以让当前线程休眠

.sleep(long millis)

括号内参数为毫秒值,这个方法可以让正在执行的当前线程休眠,或者说暂停执行,所谓的正在执行的当前线程,就是this.currentThread()返回的结果

编写测试类

package my.notes;

import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.*;

public class MyTest {
    public static void main(String[] args) throws InterruptedException {

        System.out.println("当前系统时间" + System.currentTimeMillis());
        Thread.sleep(100);
        System.out.println("当前系统时间" + System.currentTimeMillis());
        
    }
}

运行测试

这个时候可能有人问,为什么比100毫秒多,不是整整100毫秒,这个很简单,我获取系统时间也是需要执行时间的呀,拼接输出语句也是需要时间的呀

.sleep(long millis, int nanos)

括号内参数的含义分别为:毫秒、纳秒,这个方法可以让正在执行的当前线程,在毫秒值加纳秒值的基础上休眠,或者说暂停执行,所谓的正在执行的当前线程,就是this.currentThread()返回的结果

注意,传入的纳秒值不能大于 999999

我们来看看底层

    public static void sleep(long millis, int nanos)
    throws InterruptedException {
        if (millis < 0) {
            throw new IllegalArgumentException("timeout value is negative");
        }

        if (nanos < 0 || nanos > 999999) {
            throw new IllegalArgumentException(
                                "nanosecond timeout value out of range");
        }

        if (nanos >= 500000 || (nanos != 0 && millis == 0)) {
            millis++;
        }

        sleep(millis);
    }

编写测试类

package my.notes;

import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.*;

public class MyTest {
    public static void main(String[] args) throws InterruptedException {

        System.out.println("当前系统时间" + System.currentTimeMillis());
        Thread.sleep(100, 10000);
        System.out.println("当前系统时间" + System.currentTimeMillis());

    }
}

启动测试

算一算,是不是差不多?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值