sleep()方法与yield()方法的区别如下:
1 是否考虑线程的优先级不同
sleep()方法给其他线程运行机会时不考虑线程的优先级,也就是说,它会给低优先级的线程运行的机会。而yield()方法只会给相同优先级或更高优先级的线程运行的机会。
2 重新执行时机不同
sleep()方法会使当前线程阻塞,在睡眠时间内不会被执行。而yield()方法只是使当前线程重新回到可执行状态,当前线程有可能在进入可执行状态后立刻又被执行。
3 是否抛出异常不同
sleep()方法声明抛出InterruptedException,而yield()方法声明没有抛出任何异常。
4 可移植性不同
sleep()方法比yield()方法(与操作系统有关)具有更好的可移植性。
参考资料
《Java程序员面试笔试宝典》 P150