共同点:1.都是Thread类中的类方法
2.都会导致正在执行的线程释放CPU
区别:
1.线程进入的状态不同
sleep方法导致线程进入到阻塞状态,yield方法导致线程进入就绪状态
2.是否考虑线程优先级
sleep方法不会考虑线程优先级,当一个线程调用sleep方法释放CPU后,所有优先级级别的线程都有机会获得CPU。
yield方法会考虑线程优先级
当一个线程调用sleep方法释放CPU后,与该线程具有同等优先级,或优先级比该线程高的线程有机会获得CPU
3.可移植性
sleep方法比yield方法具有更好的可移植性
4.是否抛出异常
sleep方法声明抛出InterruptedException,而yield方法没有声明任何异常
5.是否有参数
sleep方法在Thread类中有两种重载形式,sleep(long ms),sleep(long ms,int nanos)yield方法没有参数。
sleep()和yield()的区别
最新推荐文章于 2022-12-05 22:39:19 发布