本节书摘来自华章社区《Java多线程编程核心技术》一书中的第1章,第1.5节sleep()方法,作者高洪岩,更多章节内容可以访问云栖社区“华章社区”公众号查看
1.5 sleep()方法
方法sleep()的作用是在指定的毫秒数内让当前“正在执行的线程”休眠(暂停执行)。这个“正在执行的线程”是指this.currentThread()返回的线程。
通过一个示例进行说明。创建项目t8,类MyThread1.java代码如下:
public class MyThread1 extends Thread {
@Override
public void run() {
try {
System.out.println("run threadName="
+ this.currentThread().getName() + " begin");
Thread.sleep(2000);
System.out.println("run threadName="
+ this.currentThread().getName() + " end");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
运行类Run1.java代码如下:
public class Run1 {
public static void main(String[] args) {
MyThread1 mythread = new MyThread1();
System.out.println("begin =" + System.currentTimeMillis());
mythread.run();
System.out.println("end =" + System.currentTimeMillis());
}
}
直接调用run()方法,程序运行结果如图1-25所示。
继续实验,创建MyThread2.java代码如下:
public class MyThread2 extends Thread {
@Override
public void run() {
try {
System.out.println("run threadName="
+ this.currentThread().getName() + " begin ="
+ System.currentTimeMillis());
Thread.sleep(2000);
System.out.println("run threadName="
+ this.currentThread().getName() + " end ="
+ System.currentTimeMillis());
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
创建Run2.java代码如下:
public class Run2 {
public static void main(String[] args) {
MyThread2 mythread = new MyThread2();
System.out.println("begin =" + System.currentTimeMillis());
mythread.start();
System.out.println("end =" + System.currentTimeMillis());
}
}
使用start()方法启动线程,程序运行结果如图1-26所示。
由于main线程与MyThread2线程是异步执行的,所以首先打印的信息为begin和end。而MyThread2线程是随后运行的,在最后两行打印run begin和run end相关的信息。