sleep方法的使用
Thread类的方法 public static void sleep(long millis)
作用:在指定的毫秒数内让正在执行的线程休眠(暂停执行)
参数为休眠的时间,单位是毫秒
一个线程,使用sleep方法:
package java_thread;
class MyThread1 implements Runnable {
@Override
public void run() {
for(int i=0; i<15 ; i++){
System.out.println(Thread.currentThread().getName() + "执行第" + i + "次!");
//使用try-catch,当被中断时抛出异常
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public class SleepDemo {
public static void main(String[] args) {
MyThread1 mt = new MyThread1();
Thread t = new Thread(mt);
t.start();
}
}
输出:
Thread-0执行第0次!
Thread-0执行第2次!
Thread-0执行第3次!
Thread-0执行第4次!
Thread-0执行第5次!
Thread-0执行第6次!
Thread-0执行第7次!
Thread-0执行第8次!
Thread-0执行第9次!
Thread-0执行第10次!
Thread-0执行第11次!
Thread-0执行第12次!
Thread-0执行第13次!
Thread-0执行第14次!
通过观察输出结果,可以看到每条输出之间间隔几乎1s的时间。
当使用多个线程:
public class SleepDemo {
public static void main(String[] args) {
MyThread1 mt = new MyThread1();
Thread t = new Thread(mt);
t.start();
Thread t1 = new Thread(mt);
t1.start();
}
}
输出:
Thread-1执行第0次!
Thread-0执行第0次!
Thread-1执行第1次!
Thread-0执行第1次!
Thread-1执行第2次!
Thread-0执行第2次!
Thread-1执行第3次!
Thread-0执行第3次!
Thread-1执行第4次!
Thread-0执行第4次!
Thread-1执行第5次!
Thread-0执行第5次!
Thread-1执行第6次!
Thread-0执行第6次!
Thread-1执行第7次!
Thread-0执行第7次!
Thread-1执行第8次!
Thread-0执行第8次!
Thread-1执行第9次!
Thread-0执行第9次!
Thread-1执行第10次!
Thread-0执行第10次!
Thread-1执行第11次!
Thread-0执行第11次!
Thread-1执行第12次!
Thread-0执行第12次!
Thread-1执行第13次!
Thread-0执行第13次!
Thread-1执行第14次!
Thread-0执行第14次!
通过观察,可以看到并不是每条输出之间间隔1s,那是因为,当线程0执行完一条语句进入休眠时,线程1就会获取cpu的使用权,当线程1执行完后,线程0的休眠时间可能就到了,所以形成了这种交替执行的结果。