Java 多线程 sleep()方法与yield()方法的区别

Posted 王景迁

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 多线程 sleep()方法与yield()方法的区别相关的知识,希望对你有一定的参考价值。

  sleep()方法与yield()方法的区别如下:

  1 是否考虑线程的优先级不同

  sleep()方法给其他线程运行机会时不考虑线程的优先级,也就是说,它会给低优先级的线程运行的机会。而yield()方法只会给相同优先级或更高优先级的线程运行的机会。

  2 重新执行时机不同

  sleep()方法会使当前线程阻塞,在睡眠时间内不会被执行。而yield()方法只是使当前线程重新回到可执行状态,当前线程有可能在进入可执行状态后立刻又被执行。

  3 是否抛出异常不同

  sleep()方法声明抛出InterruptedException,而yield()方法声明没有抛出任何异常。

  4 可移植性不同

  sleep()方法比yield()方法(与操作系统有关)具有更好的可移植性。

 

  参考资料

  《Java程序员面试笔试宝典》 P150

以上是关于Java 多线程 sleep()方法与yield()方法的区别的主要内容,如果未能解决你的问题,请参考以下文章

Java多线程学习笔记— “Thread类三个方法:线程休眠sleep()线程礼让yield()线程强制执行join()”

Java中Wait,Sleep和Yield方法的区别

多线程_yield()和sleep()方法比较

Java线程中yield与join方法的区别

多线程必备基础

多线程必备基础