public class Thread_sleep1 {
/**
* 睡眠阻塞sleepblock
*
* 默认有线程执行main方法
* @param args
*/
public static void main(String[] args) {
long start = System.currentTimeMillis();
try {
//使当前正在执行的线程沉睡指定的时间,以毫秒为单位
Thread.sleep(10000);
} catch (InterruptedException e) {//若睡眠期间有另一个线程中断它,则中断异常
e.printStackTrace();
}
long end = System.currentTimeMillis();
long time = end-start;
System.out.println("睡眠的时间长度:"+time);
}
}
public class G_sleep {
public static void main(String[] args) {
/**
* 使用Thread.sleep()方法实现计时器
* 注意,该程序会发生跳秒现象
* 跳秒的原因:例如当20:45:1999ms时,首先会睡眠阻隔1000ms
* 之后运行该main方法的线程会自动进入runnable状态,再分配时间片,
* 这个过程也是需要时间的,假如用了2ms(这2ms可能是累积得来的),则
* 1999ms+1002ms就跳过了20:45:2s
*/
SimpleDateFormat sdf=new SimpleDateFormat("HH-mm-ss");
while(true){//死循环
System.out.println(sdf.format(new Date()));
try {
Thread.sleep(1000);//sleep()是static方法,无返回值
} catch (InterruptedException e) {//中断异常
}
}
}
}