目录
.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());
}
}
启动测试
算一算,是不是差不多?