在 Java Thread 类内有sleep( )方法,这个方法可以让线程进入睡眠,睡眠多久由 sleep( ) 的参数值决定,单位是 ms,1000ms 等于 1s。Thread 类所提供的方法声明如下。
public static void sleep(long milliseconds) throws InterruptedException
上述声明中有throws InterruptedException,表示这个方法在使用时需写在 try-catch 区块内,可参考下面的示例 1,或是使用时直接在方法右边加上上述声明。
【示例 1】
这个程序主要是重新设计《Java创建线程的两种方式》中的示例 4,让线程睡眠 0.5s,然后让赛马所跑的圈数缩小。
创建 HorseRacing3 类,代码如下:
package chapter;
class HorseRacing3 extends Thread { // 继承Thread类
HorseRacing3(String name) { // 构造方法
super(name); // 设置名称
}
public void run() { // 定义run方法
for (int i = 1; i <= 5; i++) {
try {
sleep(500); // 线程睡眠0.5s
} catch (InterruptedException e) {
System.out.println(e);
}
System.out.println(getName() + "正在跑第" + i + "圈...");
}
}
}
创建 ch8 类,代码如下:
package chapter;
public class ch8 {
public static void main(String args[]) {
HorseRacing3 t1 = new HorseRacing3("Horse1"); // 建立线程对象
HorseRacing3 t2 = new HorseRacing3("Horse2"); // 建立线程对象
t1.start();
t2.start();
}
}
程序运行后,结果如下:
Horse2正在跑第1圈...
Horse1正在跑第1圈...
Horse1正在跑第2圈...
Horse2正在跑第2圈...
Horse2正在跑第3圈...
Horse1正在跑第3圈...
Horse2正在跑第4圈...
Horse1正在跑第4圈...
Horse2正在跑第5圈...
Horse1正在跑第5圈...
运行后可以发现,每次结果也会不同。