(五十三)sleep()与yield()方法区别

对于sleep或者wait方法,他们都将进入特定的状态,伴随着状态的切换,也就意味着等待某些条件的发生,才能够继续,比如条件满足,或者到时间等

但是yield方法不涉及这些事情,他针对的是时间片的划分与调度,所以对开发者来说只是临时让一下,让一下他又不会死,就只是再等等

一、让其他线程运行,是否考虑优先级

sleep()方法不会考虑优先级,因此会给低优先级的线程机会

yield()会给同级或更高级的线程以运行的机会

二、进入的状态不同

sleep()后会进入阻塞状态,执行sleep()方法的线程在指定时间内肯定不会被执行

yield():方法只是使当前线程重新回到可执行状态,所以可以马上就被执行

【不过要注意,可以认为yield只是一种建议性的,如果调用了yield方法,对CPU时间片的分配进行了“礼让”,他仍旧有可能继续获得时间片,并且继续执行,所以一次调用yield 并不一定会代表肯定会发生什么】

三、声明是否抛异常

sleep():声明会抛InterruptedException

yield():没有声明任何异常

 

 

 

posted @ 2019-03-19 21:12  测试开发分享站  阅读(157)  评论(0编辑  收藏  举报