/**
* Created by Leon on 2017/5/21.
* sleep和interrupt方法测试
* 提供了一种打断子线程的方式,不是最优方法
* 最优方法是在run函数里设置flag
* 还有一种stop()方法 ,直接杀死线程,不能再启动,多数情况下废弃
*/
import java.util.Date;
import java.text.SimpleDateFormat;
class SleepThread extends Thread
{
boolean flag=true;//通过把flag置为flase结束线程
@Override
public void run() //每隔一秒打印一次时间
{
while(flag)
{
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
System.out.println(df.format(new Date()));// new Date()为获取当前系统时间
try{
sleep(1000); //每隔一秒打印一次时间
}catch(InterruptedException e)
{
return;//线程结束
}
}
}
}
public class TestInterrupt
{
public static void main(String[] args)
{
SleepThread x =new SleepThread();
x.start();
try
{
Thread.sleep(10000);//主线程sleep 10秒
}
catch (InterruptedException e)
{}
x.interrupt();//10秒后打断子线程,子线程会抛出InterruptedException
}
}
输出如下: