天天看点

《Java程序员面试秘笈》—— 1.6 线程的休眠和恢复

本节书摘来异步社区《java 7并发编程实战手册》一书中的第1章,第1.6节,作者:【西】javier fernández gonzález,更多章节内容可以访问云栖社区“异步社区”公众号查看。

有些时候,你需要在某一个预期的时间中断线程的执行。例如,程序的一个线程每隔一分钟检查一次传感器状态,其余时间什么都不做。在这段空闲时间,线程不占用计算机的任何资源。当它继续执行的cpu时钟来临时,jvm会选中它继续执行。可以通过线程的sleep()方法来达到这个目标。sleep()方法接受整型数值作为参数,以表明线程挂起执行的毫秒数。当线程休眠的时间结束了,jvm会分给它cpu时钟,线程将继续执行它的指令。

sleep()方法的另一种使用方式是通过timeunit枚举类元素进行调用。这个方法也使用thread类的sleep()方法来使当前线程休眠,但是它接收的参数单位是秒,最后会被转化成毫秒。

在本节中,我们将开发程序来完成这样的内容:使用sleep()方法,每间隔一秒就输出实际时间。

准备工作

本节的范例是在eclipse ide里完成的。无论你使用eclipse还是其他的ide(比如netbeans),都可以打开这个ide并且创建一个新的java工程。

范例实现

按照接下来的步骤实现本节的范例。

1.创建一个名为fileclock的类,并且实现runnable接口。

``

public class fileclock implements runnable {``

2.实现run()方法。

for (int i = 0; i < 10; i++) {

} catch (interruptedexception e) {

}

}<code>`</code>

4.实现范例的主类。创建一个名为filemain的类并包含main()方法。

fileclock clock=new fileclock();

thread thread=new thread(clock);

thread.start();<code>`</code>

6.调用timeunit类的seconds属性的sleep()方法,休眠5秒钟。

继续阅读