当一个线程启动后会按照既定的结构快速执行完毕,如果需要暂缓线程的执行速度,就可以利用Thread类中提供的休眠方法完成。
在进程休眠时有可能会产生中断异常InterruptedException,中断异常属于Exception的子类,程序中必须强制性进行该异常的捕获与处理。
范例:线程休眠
public class JavaThread315 {
public static void main(String[] args) {
Runnable run=()->{ //Runnable实例对象
for (int i = 0; i < 10; i++) {
System.out.println(Thread.currentThread().getName()+"、x="+i);
try {
Thread.sleep(1000); //暂缓1秒(1000毫秒)执行
} catch (InterruptedException e) { //强制性异常处理
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
for(int num=0;num<5;num++) {
new Thread(run,"线程对象-"+num).start(); //启动线程
}
}
}
执行结果
线程对象-0、x=0
线程对象-2、x=0
线程对象-1、x=0
线程对象-3、x=0
线程对象-4、x=0
线程对象-0、x=1
线程对象-1、x=1
线程对象-2、x=1
线程对象-3、x=1
线程对象-4、x=1
线程对象-1、x=2
线程对象-2、x=2
线程对象-0、x=2
线程对象-3、x=2
线程对象-4、x=2
线程对象-1、x=3
线程对象-0、x=3
线程对象-2、x=3
线程对象-3、x=3
线程对象-4、x=3
线程对象-1、x=4
线程对象-2、x=4
线程对象-0、x=4
线程对象-3、x=4
线程对象-4、x=4
线程对象-1、x=5
线程对象-0、x=5
线程对象-2、x=5
线程对象-3、x=5
线程对象-4、x=5
线程对象-1、x=6
线程对象-0、x=6
线程对象-2、x=6
线程对象-4、x=6
线程对象-3、x=6
线程对象-0、x=7
线程对象-2、x=7
线程对象-1、x=7
线程对象-4、x=7
线程对象-3、x=7
线程对象-2、x=8
线程对象-1、x=8
线程对象-0、x=8
线程对象-3、x=8
线程对象-4、x=8
线程对象-2、x=9
线程对象-1、x=9
线程对象-0、x=9
线程对象-3、x=9
线程对象-4、x=9
本程序设计了5个线程对象,并且每一个线程对象执行时都需要暂停一秒,但是需要提醒读者的是,多线程的启动与执行都是由操作系统随机分配的,虽然看起来这5个线程的休眠是同步进行的,但是也有先后顺序,只不过由于代码的执行速度较快,不易观察到。下图分许多个线程对象执行一次run()方法的过程。