线程睡眠
如果需要让当前执行的线程暂停一段时间,并进入阻塞状态可以调用Thread类的静态方法sleep()实现
当当前线程调用sleep方法后,该线程会进入阻塞状态,在该线程睡眠的时间里,该线程不会有执行的机会,即使执行的程序中没有其他线程。
@Override
public void run() {
System.out.println("睡眠前时间"+new Date());
try{
Thread.sleep(2000);
}catch(Exception e){
}
System.out.println("睡眠了2秒后时间"+new Date());
}
此外Thread还提供了一个与sleep()相似的yield()静态方法,它也是让正在执行的程序暂停一下,但它不会阻塞线程,只是让它进入就绪状态,让线程调度器重新调度一次。
sleep()和yield的区别
i>sleep()方法暂停线程后会给其他线程执行的机会,不会理会其他线程的优先级,而yield()方法只会给优先级相同或优先级更高的线程执行的机会
ii>sleep()方法会让线程进入到阻塞的状态,直到经过阻塞时间才会进入到就绪状态,而yield()方法只是将线程强制进入到就绪状态
iii>sleep()方法会抛出interruptedException异常,而yield()方法没有声明抛出异常
iV>sleep()方法比yield()方法有更好的可移植性。