从Java 8 API(截至目前最新的非测试版本):
提示调度程序当前线程愿意放弃使用处理器。调度程序可以忽略此提示。
Yield是一种启发式尝试,旨在改善本来会过度利用CPU的线程之间的相对进展。应结合详细的分析和基准测试使用,以确保其实际具有所需的效果。
很少适合使用此方法。它可能在调试或测试目的中有用,因为它可以帮助重现由于竞争条件而导致的错误。在设计类似于java.util.concurrent.locks包中的并发控制构造时,它也可能很有用。
这些含义是:
Thread.yield()
的具体细节有所不同,但该方法调用基本上什么也不做。您调用它,它什么也不做,并且在尽可能快的时间内返回,除非它可能会或可能不会结束线程的当前时间片。
它是一个“跨平台的雷区”吗?
如果您编写的代码需要 Thread.yield()
真正结束调用者的时间片才能正常工作,则您已编写了特定于平台的代码。但是,如果您需要特定于平台的行为,Java 可能不应该是您的首选语言。