(五十三)sleep()与yield()方法区别
对于sleep或者wait方法,他们都将进入特定的状态,伴随着状态的切换,也就意味着等待某些条件的发生,才能够继续,比如条件满足,或者到时间等
但是yield方法不涉及这些事情,他针对的是时间片的划分与调度,所以对开发者来说只是临时让一下,让一下他又不会死,就只是再等等
一、让其他线程运行,是否考虑优先级
sleep()方法不会考虑优先级,因此会给低优先级的线程机会
yield()会给同级或更高级的线程以运行的机会
二、进入的状态不同
sleep()后会进入阻塞状态,执行sleep()方法的线程在指定时间内肯定不会被执行
yield():方法只是使当前线程重新回到可执行状态,所以可以马上就被执行
【不过要注意,可以认为yield只是一种建议性的,如果调用了yield方法,对CPU时间片的分配进行了“礼让”,他仍旧有可能继续获得时间片,并且继续执行,所以一次调用yield 并不一定会代表肯定会发生什么】
三、声明是否抛异常
sleep():声明会抛InterruptedException
yield():没有声明任何异常