Java中线程的yield()方法与sleep()方法有什么区别?

提问者:帅平 问题分类:面试刷题

Java中线程的yield()方法与sleep()方法有什么区别?

1 个回答
Rae
Rae 管理员

第一,从线程优先级来说,yield()方法只会给相同优先级或者更高优先级的线程运行机会;但是,sleep()方法给其他线程运行机会时不考虑线程的优先级,因此也会给优先级低的线程运行的机会。
第二,从运行后状态来说,运行yield()方法之后,当前线程会重新回到可执行状态,所以执行yield()方法后,那个线程有可能又马上被执行;但是,如果执行sleep()方法后,线程会转入阻塞状态,所以,执行sleep()方法的线程在指定的时间内肯定是不会被执行的。
第三,从抛出异常来说,yield()方法没有声明任何异常;而sleep()方法声明抛出InterruptedException。
第四,从可移植性上来说,sleep()方法比yield()方法具有更好的可移植性。

发布于:1个月前 (10-23)
我来回答