1.写一个实现Runnable接口的FileClock类
import java.util.Date;
import java.util.concurrent.TimeUnit;
public class FileClock implements Runnable{
@Override
public void run()
{
for(int i=0;i<10;i++)
{
System.out.printf("%s\n",new Date());
try
{
TimeUnit.SECONDS.sleep(2); //休眠2秒
}catch(InterruptedException e)
{
//被中断的时候调用
System.out.printf("The FileClock hase been interrupted\r\n");
}
}
}
}
2.主类的实现
import java.util.concurrent.TimeUnit;
public class FileMain {
public static void main(String[] args) {
// TODO Auto-generated method stub
FileClock clock=new FileClock();
Thread thread=new Thread(clock);
thread.start(); //开启线程
try
{
TimeUnit.SECONDS.sleep(5); //休眠5秒
}catch(InterruptedException e)
{
e.printStackTrace();
}
thread.interrupt(); //线程中断
}
}
3.运行结果
可以看到当在主程序中中断线程时,即使线程仍然在休眠的那段时间内也会被立即唤醒,捕捉InterruptedException异常,输出异常信息。