一、概述
使用情景:在某一个预期的时间中断线程的执行。
eg: 程序的一个县城每隔一分钟检查一次 传感器的状态,其余时间什么都不做,在这段空闲时间,线程不占用任务的计算机资源。当它继续执行的 cpu 时钟来临时,JVM 会选中它继续执行。这个过程可以使用 sleep() 方法来实现。
sleep() -> 接受整型数值作为参数,以表明线程挂起执行的毫秒数。当线程休眠的时间结束了,JVM会分给它 cpu 时钟,线程将继续执行它的指令。
Thead 类的 sleep() 和 TimeUnit类的 sleep() 都可以 使当前线程休眠。
二、实现
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.TimeUnit;
/***
* 使用 捕获 InterruptedException 异常来控制 线程的 中断
*/
public class FileClick implements Runnable{
public void run() {
for(int i=0;i<10;i++){
System.out.println(Thread.currentThread().getName() + "-i=>" + i+",当前时间:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
System.out.println(Thread.currentThread().getName() +",线程中断,退出...");
return;
}
}
}
}
import java.util.concurrent.TimeUnit;
public class FileClickTest {
public static void main(String[] args) {
FileClick fileClick = new FileClick();
Thread thread = new Thread(fileClick);
thread.start();
try {
TimeUnit.SECONDS.sleep(3);
} catch (InterruptedException e) {
e.printStackTrace();
}
thread.interrupt();
}
}
//console结果:
Thread-0-i=>0,当前时间:2017-09-05 10:10:52
Thread-0-i=>1,当前时间:2017-09-05 10:10:53
Thread-0-i=>2,当前时间:2017-09-05 10:10:54
Thread-0,线程中断,退出...